Unity 非同步編程技術詳解
- 用途:大型操作
- Big game logic、Http、Load asset
- 版本優化
- unity 5.4 將一些 Camera 渲染工作移出主要 threads
- unity 5.6 support Vulkan 多核多執行緒繪圖 API
- Coroutines
- 非多執行緒,在主執行緒上執行
- Unity ExecutionOrder
- C# 編譯器會自動建立一個 Coroutines class,生命週期在 MonoBehavior 結束才釋放 Coroutines,避免使用過多
- C# Threads
- Threads 並行
- Coroutines 併發,一次發送多個,但不是同時進行
- 資源爭奪解法
- lock (death lock)
- 無鎖設計 ring buffer
- Threads 餓死:長時間得不到需要資源,而不能執行,其他Threads佔用太久
- Unity API 不是線程安全,不能在Threads上使用Unity API
- C# Job System
- 目前開發中 - 在 Unity 中使用多執行緒 Performance Optimization, C# Job System