Unity 中使用Async-Await替代 coroutines


http://www.manew.com/thread-108589-1-1.html

其中重要知識點:SynchronizationContext,這個東西來將一個線程的內容傳到另一個線程中。沒有細看

 

比如:U3D開發,C#在主線程中執行一個網絡異步連接BeginConnect(ip, port, callback),C#底層是開了一個線程X去做連接相關的事情,連接完成后,從線程X調用callback。

如果我們在主線程中傳遞一個回調函數給callback,那么callback執行時是在線程X中的,這個callback就不能調用U3D的任何API(debug.log除外)

這個SynchronizationContext就是為了解決類似問題

 

個人猜測它的實現算法: 大概就是在主線程的類中定義一個容器,在子線程中將所需數據裝入容器,然后在主線程的UPDATE中取出並執行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM