Lua: coroutine

复制代码
function producer()
    local i = 0
    print(coroutine.running())
    while true do
        i = i + 1
        if i > 5 then
            error('out of number')
        end
        print('In Producer>> coroutine(co) status:', coroutine.status(co))
        coroutine.yield(i)
    end
end

function consumer(co)
    print(coroutine.running())
    while true do
        local status, value = coroutine.resume(co)
        if status then
            print('value: ', value)
        else
            print('coroutine error: ', value)
            break
        end
        os.execute("sleep " .. 1)
        print('In Consumer>> coroutine(co) status:', coroutine.status(co))
    end
end

print(coroutine.running())
co = coroutine.create(producer)
print(coroutine.isyieldable(co))
consumer(co)
复制代码

 

posted @   ascertain  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2020-05-29 Linux系统登陆过程
2020-05-29 DNS & BIND
2020-05-29 利用openssl建立私有CA
2020-05-29 bash的[ ] [[ ]]
点击右上角即可分享
微信分享提示