前面幾個項目也一直在用lua,不過coroutine很少使用到暴备,這個項目服務(wù)器換了skynet,在邏輯里面也使用協(xié)程了锨阿。比如網(wǎng)絡(luò)消息包宵睦,不用直接push給客戶端,而是使用long pulling 模式墅诡,客戶端主動查詢的模式壳嚎,服務(wù)器沒變化先掛起,然后等有修改在返回給客戶端末早。避免了無腦式的推送給客戶端烟馅,減少網(wǎng)絡(luò)壓力。 coroutine有點難理解的是coroutine.yield的返回值然磷,這里寫了個測試?yán)印?/p>
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)
結(jié)果:
Paste_Image.png
關(guān)鍵的是 第二次 coroutine.resume(co,2) 這個其實是把參數(shù)給coroutine.yield的返回值郑趁,就是b。