初识协程

--[[
协程(协同程序):
有自己的堆栈,自己的局部变量,自己的指令指针,与其他协程共享全局变量。
在多处理器的情况下,可以同时运行多个线程,但在指定的某一时刻只有一个协程在运行,
并且这个正在运行的协程在指定的时候挂起。

调用resume函数会将协程由挂起状态转为运行状态
调用yield函数会将协程由运行状态转为挂起状态,并且协程会返回yield函数的参数
]]


co = coroutine.create(function(a, b)
	print("co", a, b)
	coroutine.yield(a + b, a - b)
	print("co", a, b)
end)

print(coroutine.status(co))  -- suspended
print(coroutine.resume(co, 20, 10)) -- true	30	10 :返回yield函数的参数
print(coroutine.status(co)) -- suspended

print(coroutine.resume(co)) -- true :成功调用
print(coroutine.status(co))	-- dead :协程运行结束

print(coroutine.resume(co)) -- false	cannot resume dead coroutine :协程已dead

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章