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



results matching ""

    No results matching ""