單獨起了一個線程來處理網絡相關操作,比較常規的做法。本身沒啥特別的東西,碰到了一個不大不小的坑折騰了好久,記錄下來吧。
簡單的說就是子線程中拋出的異常,如果沒有catch的話,會導致子線程悄無聲息的退出,而u3d主線程沒有任何反饋,
只有等到業務邏輯出錯的時候才發現哪里出毛病了。
解決方法就是可能拋異常的地方都給catch掉,但是代碼很難看,或者直接子線程的主循環里面catch一下,然后輸出日志。
但是這樣也僅僅只是幫助查看分析出錯而已,最終還是需要解決掉的,又牽扯到了另一個問題。
主線程中做這些,
void foo()
{
// send msg to server
// balabala1,同時子線程已經再工作了,那么主線程再這里就有可能收到服務器的反饋
// add server msg handler
// balabala2 , 但是msg handler這里才添加,那么就會導致子線程調用msg handler的時候拋異常或者出錯。。。所以mg handler需要提前添加
}