国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

Lua的協(xié)程(coroutine)簡介

2024-07-21 23:04:40
字體:
供稿:網(wǎng)友

協(xié)程和多線程下的線程類似:有自己的堆棧,自己的局部變量,有自己的指令指針,但是和其他協(xié)程程序共享全局變量等信息。線程和協(xié)程的主要不同在于:多處理器的情況下,概念上來說多線程是同時運行多個線程,而協(xié)程是通過協(xié)作來完成,任何時刻只有一個協(xié)程程序在運行。并且這個在運行的協(xié)程只有明確被要求掛起時才會被掛起

你可以使用coroutine.create來創(chuàng)建協(xié)程:

復(fù)制代碼 代碼如下:

co = coroutine.create(function ()
     print("hi")
end)

 

協(xié)程有三種狀態(tài):掛起,運行,停止。創(chuàng)建后是掛起狀態(tài),即不自動運行。status函數(shù)可以查看當前狀態(tài)。協(xié)程真正強大的地方在于他可以通過yield函數(shù)將一段正在運行的代碼掛起。

lua的resume-yield可以互相交換數(shù)據(jù)

如果沒有對應(yīng)的yield,傳遞給resume的額外參數(shù)將作為參數(shù)傳遞給協(xié)程主函數(shù):

復(fù)制代碼 代碼如下:

co = coroutine.create(function (a, b, c)
     print("co", a, b, c)
end)
coroutine.resume(co, 1, 2, 3)

 

如果沒有錯誤的話,resume將返回true和yield的參數(shù):

復(fù)制代碼 代碼如下:

co = coroutine.create(function (a, b)
     coroutine.yield(a+b, a-b)
end)
print(coroutine.resume(co, 3, 8))

 

同樣地,yield也將返回由對應(yīng)的resume傳遞而來的參數(shù):

復(fù)制代碼 代碼如下:

co = coroutine.create (function ()
print("co", coroutine.yield())
end)
coroutine.resume(co)
coroutine.resume(co, 4, 5)

 

最后,協(xié)程主函數(shù)返回值將作為與之對應(yīng)的resume的返回值(第一個參數(shù)是true)。

復(fù)制代碼 代碼如下:

co = coroutine.create(function ()
return 6, 7
end)
print(coroutine.resume(co))

(完)
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 云南省| 乌审旗| 西充县| 桦南县| 阿克陶县| 梨树县| 中阳县| 上杭县| 安陆市| 平阴县| 巫山县| 舞阳县| 叙永县| 乐业县| 乌兰察布市| 通道| 彩票| 湖南省| 中江县| 运城市| 色达县| 青岛市| 连平县| 庐江县| 吐鲁番市| 石门县| 都匀市| 郓城县| 兰坪| 塘沽区| 义马市| 晋城| 阳谷县| 康保县| 宁南县| 五寨县| 五寨县| 阿巴嘎旗| 庆阳市| 汪清县| 鄂托克旗|