lua-协成
发布时间:2020-12-14 21:56:40 所属栏目:大数据 来源:网络整理
导读:协成接口使用: --coroutine.create() 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用 --coroutine.resume() 重启coroutine,和create配合使用 --coroutine.yield() 挂起coroutine,将coroutine设置为挂起状态,这
协成接口使用:
--coroutine.create() 创建coroutine,返回coroutine, 参数是一个函数,当和resume配合使用的时候就唤醒函数调用 --coroutine.resume() 重启coroutine,和create配合使用 --coroutine.yield() 挂起coroutine,将coroutine设置为挂起状态,这个和resume配合使用能有很多有用的效果 --coroutine.status() 查看coroutine的状态 --注:coroutine的状态有三种:dead,suspend,running,具体什么时候有这样的状态请参考下面的程序 --coroutine.wrap() 创建coroutine,返回一个函数,一旦你调用这个函数,就进入coroutine,和create功能重复 --coroutine.running() 返回正在跑的coroutine,一个coroutine就是一个线程,当使用running的时候,就是返回一个corouting的线程号 co = coroutine.create( ? ? function(i)? ? ? ? print(i); ? ? end ) --运行协程 参数是给执行函数的入参 coroutine.resume(co,1) print("status = "..coroutine.status(co)) print("----------") --创建协程 且返回一个函数 执行函数则进入协程 co = coroutine.wrap( ? ? function(i) ? ? ? ? print(i); ? ? end ) co(1) print("----------") co2 = coroutine.create( ? ? function() ? ? ? ? for i=1,10 do ? ? ? ? ? ? print(i) ? ? ? ? ? ? if i == 3 then ? ? ? ? ? ? ? ? print(coroutine.status(co2)) ?--running ? ? ? ? ? ? ? ? print(coroutine.running()) --thread:XXXXXX ? ? ? ? ? ? end ? ? ? ? ? ? coroutine.yield() ? ? ? ? end ? ? end ) --打印1后 协程暂停了 coroutine.resume(co2) print("---1--") --协程继续 打印2后 协程暂停了 coroutine.resume(co2) print("---2--") --协程继续 等于3 打印3后 输出当前跑的协程当前状态和协程号 协程暂停了 coroutine.resume(co2) print("---3--") print(coroutine.status(co2)) ? -- suspended print(coroutine.running()) print("----------") 结果: 1 status = dead ---------- 1 ---------- 1 ---1-- 2 ---2-- 3 running thread: 006B7F68 ---3-- suspended nil ---------- (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |