lua的coroutine

前面几个项目也一直在用lua,不过coroutine很少使用到,这个项目服务器换了skynet,在逻辑里面也使用协程了。比如网络消息包,不用直接push给客户端,而是使用long pulling 模式,客户端主动查询的模式,服务器没变化先挂起,然后等有修改在返回给客户端。避免了无脑式的推送给客户端,减少网络压力。 coroutine有点难理解的是coroutine.yield的返回值,这里写了个测试例子。

local fun = function (arg)
        local a = arg 
        print("a=",a)
        local b = coroutine.yield()
        print("b=",b)
end

local co = coroutine.create(fun)
coroutine.resume(co,1)
coroutine.resume(co,2)

结果:

Paste_Image.png

关键的是 第二次 coroutine.resume(co,2) 这个其实是把参数给coroutine.yield的返回值,就是b。

你可能感兴趣的:(lua的coroutine)