unity3d多線程坑


單獨起了一個線程來處理網絡相關操作,比較常規的做法。本身沒啥特別的東西,碰到了一個不大不小的坑折騰了好久,記錄下來吧。

簡單的說就是子線程中拋出的異常,如果沒有catch的話,會導致子線程悄無聲息的退出,而u3d主線程沒有任何反饋,

只有等到業務邏輯出錯的時候才發現哪里出毛病了。

解決方法就是可能拋異常的地方都給catch掉,但是代碼很難看,或者直接子線程的主循環里面catch一下,然后輸出日志。

但是這樣也僅僅只是幫助查看分析出錯而已,最終還是需要解決掉的,又牽扯到了另一個問題。

主線程中做這些,

void foo()

{

   // send msg to server

   // balabala1,同時子線程已經再工作了,那么主線程再這里就有可能收到服務器的反饋

   // add server msg handler

   // balabala2 , 但是msg handler這里才添加,那么就會導致子線程調用msg handler的時候拋異常或者出錯。。。所以mg handler需要提前添加

}

 


免責聲明!

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



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