C 協程的用法。

2021-08-10 17:40:23 字數 1373 閱讀 8965

協程:協同程式,在主程式執行的同時,開啟另外一段邏輯處理,來協同當前程式的執行,。

開啟協程的兩種方式

1、startcoroutine(string methodname)

注意:(1)、引數是方法名(字串型別),此方法可以包含乙個引數

(2)、形參方法可以有返回值

2、startcoroutine(ienumerator method)

注意:(1)、引數是方法名(testmethod()),方法中可以包含多個引數

(2)、ienumrator 型別的方法不能含有ref或者out 型別的引數,但可以含有被傳遞的引用

(3)、必須有有返回值,且返回值型別為ienumrator,返回值使用(yield retuen +表示式或者值,或者 yield break)語句

終止協程的兩種方式:

stopcoroutine (string methodname),只能終止指定的協程

使用時注意:

在程式中呼叫stopcoroutine() 方法只能終止以字串形式啟動的協程

stopallcoroutine(),終止所有協程

yield:掛起,程式遇到yield關鍵字時會被掛起,暫停執行,等待條件滿足時從當前位置繼續執行

yield return 0 or yield return null:程式在下一幀中從當前位置繼續執行

yield return 1,2,3,......: 程式等待1,2,3...幀之後從當前位置繼續執行

yield return new waitforseconds(n):程式等待n秒後從當前位置繼續執行

yield new waitforendofframe():在所有的渲染以及gui程式執行完成後從當前位置繼續執行

yield new waitforfixedupdate():所有指令碼中的fixedupdate()函式都被執行後從當前位置繼續執行

yield return www:等待乙個網路請求完成後從當前位置繼續執行

yield return startcoroutine():等待乙個協程執行完成後從當前位置繼續執行

yield break

如果使用yield break語句,將會導致協程的執行條件不被滿足,不會從當前的位置繼續執行程式,而是直接從當前位置跳出函式體,回到函式的根部

協程的執行原理

協程函式的返回值時ienumerator,它是乙個迭代器,可以把它當成執行乙個序列的某個節點的指標,它提供了兩個重要的介面,分別是current(返回當前指向的元素)和movenext()(將指標向後移動乙個單位,如果移動成功,則返回true)

如果movenext函式返回為true意味著協程的執行條件被滿足,則能夠從當前的位置繼續往下執行。否則不能從當前位置繼續往下執行。

gevent 協程用法

文章介紹了一種採用迴圈的方式生產協程列表,並可以向協程函式傳遞引數。協程引用 import gevent from gevent import monkey,pool monkey.patch all 初始化協程池 poolnum 10 pool pool.pool poolnum 例項化乙個協程池...

unity 協程的用法

概念 伴隨著主線程 起運 的 段程式。協程與協程之間是並 執 與主線程也是並 執 協程可以用來計時,例如lol生產野怪,在怪物死亡時呼叫計時生成野怪的協程,那麼這段程式只會在野怪倒計時的時候執行,生成野怪後協程就會關閉,比起直接寫在主程序裡節省效能。關鍵字ienumerator 協程必須返回 yie...

協程巢狀協程

import asyncio import functools 第三層協程 async def test1 print 我是test1 await asyncio.sleep 1 print test1已經睡了1秒 await asyncio.sleep 3 print test1又睡了3秒 ret...