协同相关 协同的基础

co = coroutine.create(function () --创建协同程序 print("hi coroutine") end) print(co) --> thread: 0x8071d98 返回值 co 是thread类型 --刚创建的协同程序默认状态是 挂起状态(suspended) print("hi``?"); print(coroutine.status(co)) --检查协同程序的状态 print(coroutine.resume(co) ) --> hi --调用 resume 使 协同程序恢复运行 变为 运行态(running) print(coroutine.status(co)) --> dead --协同程序执行完毕 变为终止态(dead) --个人感觉协同程序有点类似于微软的"纤程" 这个概念 print("yield 函数演示 可以挂起协同程序") co = coroutine.create(function () for i=1,10 do print("co", i) coroutine.yield() end end) coroutine.resume(co) --> co 1 print(coroutine.status(co)) --> suspended coroutine.resume(co) --> co 2 coroutine.resume(co) --> co 3 coroutine.resume(co) --> co 4 coroutine.resume(co) --> co 5 coroutine.resume(co) --> co 6 coroutine.resume(co) --> co 7 coroutine.resume(co) --> co 8 coroutine.resume(co) --> co 9 coroutine.resume(co) --> co 10 print("and?") coroutine.resume(co) --> co ? print(coroutine.resume(co)) --协同程序已经死了` print("and2?") print("通过resume传递参数给 协同程序") co = coroutine.create(function (a,b,c) --带参数的协同程序 print("co", a,b,c) end) coroutine.resume(co,11,22,33); --传递参数给协同程序 print("协同程序内传递参数给 resume") co = coroutine.create(function (a,b) coroutine.yield(a + b, a - b) end) print(coroutine.resume(co, 20, 10)) --> true 30 10 print("协同代码结束时的返回值 也会传给resume") co = coroutine.create(function () return 6, 7 end) print(coroutine.resume(co)) --> true 6 7  

你可能感兴趣的:(thread,c,function,微软)