乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      關(guān)于Unity3D的協(xié)程(Coroutine)

       鴻蛟家平 2017-03-03

      http://blog.163.com/hj_0467/blog/static/74252563201011711845180/

      http://wg2009perfect.blog.163.com/blog/static/127997663201211111222126/

       

      我在這摘要下:

      1.

      coroutine,中文翻譯“協(xié)程”。這個(gè)概念可能有點(diǎn)冷門,不過(guò)百度之,說(shuō)是一種很古老的編程模型了,以前的操作系統(tǒng)里進(jìn)程調(diào)度里用到過(guò),現(xiàn)在操作系統(tǒng)的進(jìn)程調(diào)度都是根據(jù)時(shí)間片和優(yōu)先級(jí)來(lái)進(jìn)行輪換,以前是要程序自己來(lái)釋放cpu的控制權(quán),一直不釋放一直也就占用著cpu,這種要求程序自己來(lái)進(jìn)行調(diào)度的編程模型應(yīng)該就叫“協(xié)程”了。

      協(xié)程和線程差不多,線程的調(diào)度是由操作系統(tǒng)完成的,協(xié)程把這項(xiàng)任務(wù)交給了程序員自己實(shí)現(xiàn),當(dāng)然也就可以提高靈活性,另外協(xié)程的開(kāi)銷比線程要小,在程序里可以開(kāi)更多的協(xié)程。

      一些語(yǔ)言里自帶了對(duì)coroutine的實(shí)現(xiàn),比如lua。c里面雖然沒(méi)有coroutine,不過(guò)windows下提供了一種叫fiber的機(jī)制,叫做“纖程”,算是一種輕量級(jí)線程。

       

      2.

       

      一。什么是協(xié)同程序

             協(xié)同程序,即在主程序運(yùn)行時(shí)同時(shí)開(kāi)啟另一段邏輯處理,來(lái)協(xié)同當(dāng)前程序的執(zhí)行。換句話說(shuō),開(kāi)啟協(xié)同程序就是開(kāi)啟一個(gè)線程。

       

      二。協(xié)同程序的開(kāi)啟與終止

             在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可開(kāi)啟一個(gè)協(xié)同程序,也就是說(shuō)該方法必須在MonoBehaviour或繼承于MonoBehaviour的類中調(diào)用。

             在Unity3D中,使用StartCoroutine(string methodName)和StartCoroutine(IEnumerator routine)都可以開(kāi)啟一個(gè)線程。區(qū)別在于使用字符串作為參數(shù)可以開(kāi)啟線程并在線程結(jié)束前終止線程,相反使用IEnumerator 作為參數(shù)只能等待線程的結(jié)束而不能隨時(shí)終止(除非使用StopAllCoroutines()方法);另外使用字符串作為參數(shù)時(shí),開(kāi)啟線程時(shí)最多只能傳遞一個(gè)參數(shù),并且性能消耗會(huì)更大一點(diǎn),而使用IEnumerator 作為參數(shù)則沒(méi)有這個(gè)限制。

              在Unity3D中,使用StopCoroutine(string methodName)來(lái)終止一個(gè)協(xié)同程序,使用StopAllCoroutines()來(lái)終止所有可以終止的協(xié)同程序,但這兩個(gè)方法都只能終止該MonoBehaviour中的協(xié)同程序。

              還有一種方法可以終止協(xié)同程序,即將協(xié)同程序所在gameobject的active屬性設(shè)置為false,當(dāng)再次設(shè)置active為ture時(shí),協(xié)同程序并不會(huì)再開(kāi)啟;如是將協(xié)同程序所在腳本的enabled設(shè)置為false則不會(huì)生效。這是因?yàn)閰f(xié)同程序被開(kāi)啟后作為一個(gè)線程在運(yùn)行,而MonoBehaviour也是一個(gè)線程,他們成為互不干擾的模塊,除非代碼中用調(diào)用,他們共同作用于同一個(gè)對(duì)象,只有當(dāng)對(duì)象不可見(jiàn)才能同時(shí)終止這兩個(gè)線程。然而,為了管理我們額外開(kāi)啟的線程,Unity3D將協(xié)同程序的調(diào)用放在了MonoBehaviour中,這樣我們?cè)诰幊虝r(shí)就可以方便的調(diào)用指定腳本中的協(xié)同程序,而不是無(wú)法去管理,特別是對(duì)于只根據(jù)方法名來(lái)判斷線程的方式在多人開(kāi)發(fā)中很容易出錯(cuò),這樣的設(shè)計(jì)保證了對(duì)象、腳本的條理化管理,并防止了重名。

       

      Unity3D之協(xié)程(Coroutines & Yield )

      http://blog.csdn.net/jjiss318/article/details/7447421

       這有些個(gè)國(guó)外的人解釋的,算是比較清楚,只是還是沒(méi)有原理上的解釋:

      http://www.blog./2010/01/23/coroutines-in-unity3d-c-version/

      http://blog./2009/11/18/tutorial-coroutines-pt-1-waiting-for-input/

       

      我的一些粗淺小結(jié):

      1.Coroutines顧名思議是用來(lái)協(xié)助主要進(jìn)程的,在Unity中感覺(jué)就是一個(gè)可動(dòng)態(tài)添加和移除的Update()函數(shù)。它的調(diào)用在所有Update函數(shù)之后。

      Unity原文:

      • If you start a coroutine in LateUpdate it will also be called after LateUpdate just before rendering.
      • Coroutines are executed after all Update functions.

      2.yield就像是一個(gè)紅綠燈,在滿足緊跟在它后面的條件之前,這個(gè)協(xié)程會(huì)掛起,把執(zhí)行權(quán)交給調(diào)用它的父函數(shù),滿足條件時(shí)就可以執(zhí)行yield下面的代碼。

      Unity原文:

      Coroutine

      Normal coroutine updates are run after the Update function returns. A coroutine is function that can suspend its execution (yield) until the given given YieldInstruction finishes. Different uses of Coroutines:

      • yield;The coroutine will continue after all Update functions have been called on the next frame.
      • yield WaitForSeconds(2);Continue after a specified time delay, after all Update functions have been called for the frame
      • yield WaitForFixedUpdate();Continue after all FixedUpdate has been called on all scripts
      • yield WWWContinue after a WWW download has completed.
      • yield StartCoroutine(MyFunc); Chains the coroutine, and will wait for the MyFunc coroutine to complete first.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多