*要注意 Mutil Thread 處理完還要回 MainThread * 才能使用Unity API
測試環境 Unity 2017 x BlueStack 4
Unity 非同步做法有
1. Task (Mutil Thread)
2. Thread (Mutil Thread)
3. Corotine ( Main Thread ) (Single Thread)
4. BackgroundWorker (Mutil Thread)
- BackgroundWoker 自帶回 MainThread 的API 可說是相當方便。
其中 Task , Thread , BackgroundWorker 都是.Net 提供的多執行緒做法只是根據.Net版本做更新
( 版本由舊到新 )
Thread < BackgroundWoker < Task(.Net 4.5+)
PS: Unity 2017 (.Net 3.5 版本 不能使用 Task 需切換為 .Net 4.5+ )
這裡使用LZMA 解壓做測試 :
結論 : 只用Corotine 跑最慢且會影響 FPS (如預期 因為他只在MainThread 執行)
BackgroundWorker & Task 效能差不多 , 單純用 Thread 稍差一點。
未來: Unity 2018 還有提供 JobSystem 的執行緒封裝,之後可以再來試試看~
未來: Unity 2018 還有提供 JobSystem 的執行緒封裝,之後可以再來試試看~
沒有留言:
張貼留言