Share via


Différences de thread entre les versions de Direct3D

De nombreux modèles de programmation multithread utilisent des primitives de synchronisation (telles que les mutex) pour créer des sections critiques et empêcher l’accès au code par plusieurs threads à la fois.

Toutefois, les méthodes de création de ressources de l’interface ID3D11Device ont été conçues pour être réinscrites, sans nécessiter de primitives de synchronisation et de sections critiques. Par conséquent, les méthodes de création de ressources sont efficaces et faciles à utiliser.

Différences entre Direct3D 11, 10 et 9 :
Par défaut, Direct3D 11 est principalement thread-safe et continue à autoriser les applications à refuser l’utilisation de D3D11_CREATE_DEVICE_SINGLETHREADED. Si les applications ne sont pas thread-safe, elles doivent respecter les règles de threading. Le runtime synchronise les threads pour le compte de l’application, ce qui permet aux threads simultanés de s’exécuter. En fait, la synchronisation dans Direct3D 11 est plus efficace que l’utilisation de la couche thread-safe dans Direct3D 10.
Direct3D 10 ne peut prendre en charge l’exécution d’un seul thread à la fois. Direct3D 10 est entièrement thread-safe et permet à une application de refuser ce comportement à l’aide de D3D10_CREATE_DEVICE_SINGLE_THREADED.
Direct3D 9 n’est pas thread-safe par défaut. Toutefois, lorsque vous appelez CreateDevice ou CreateDeviceEx pour créer un appareil, vous pouvez spécifier l’indicateur D3DCREATE_MULTITHREADED pour sécuriser le thread d’API Direct3D 9. Cela entraîne une surcharge de synchronisation importante. Par conséquent, il n’est pas recommandé de sécuriser le thread d’API Direct3D 9, car les performances peuvent être dégradées.

Multithreading