Direct3D 版本之間的執行緒差異
許多多執行緒程式設計模型會使用同步處理基本類型 (,例如 mutex) 來建立重要區段,並防止一次多個執行緒存取程式碼。
不過, ID3D11Device 介面的資源建立方法的設計目的是要重新進入,而不需要同步處理基本專案和重要區段。 因此,資源建立方法有效率且容易使用。
Direct3D 11、10 和 9 之間的差異: Direct3D 11 預設為大部分安全線程,並繼續允許應用程式選擇使用D3D11_CREATE_DEVICE_SINGLETHREADED。 如果應用程式退出宣告安全線程,則必須遵守執行緒規則。 執行時間會代表允許平行線程執行的應用程式同步處理執行緒。 事實上,Direct3D 11 中的同步處理比在 Direct3D 10 中使用安全線程層更有效率。 Direct3D 10 一次只能支援一個執行緒的執行。 Direct3D 10 完全安全線程,可讓應用程式退出宣告該行為,方法是使用 D3D10_CREATE_DEVICE_SINGLE_THREADED。 Direct3D 9 不會預設為安全線程。 不過,當您呼叫 CreateDevice 或 CreateDeviceEx 來建立裝置時,您可以指定 D3DCREATE_MULTITHREADED 旗標,讓 Direct3D 9 API 執行緒安全。 這會導致大量的同步處理額外負荷。 因此,不建議使用 Direct3D 9 API 執行緒安全,因為效能可能會降低。 |