coroutine.create(f):用函数 f 创建一个协程,返回 thread 类型对象。
coroutine.wrap(f):与前面 coroutine.create 一样,coroutine.wrap 函数也创建一个协程,与前者返回协程本身不同,后者返回一个函数。当调用该函数时,重新执行协程。
co01=coroutine.create(function(a) return 2*a end)
a,b=coroutine.resume(co01,20)
print(a,b)
co02=coroutine.wrap(function(a) return 2*a end)
c=co02(20)
print(c)
print("==========分割线===========")
co = coroutine.wrap(function(a)
local c = coroutine.yield(a+1)
print("main func a: ",a)
return 2*a
end)
b = co(20)
print(b) -- 21
--从yield后面执行
d = co(b+1)
print(d) -- 40
print("==========分割线===========")
co = coroutine.create(function(a) local c = coroutine.yield(a+1) print("main func c: ",c) return 2*a end)
b,v = coroutine.resume(co,20)
print(b,v) -- true,21
b,v = coroutine.resume(co,20)
print(b,v) -- true,40