Différences de threads entre les versions Direct3D

De nombreux modèles de programmation multithread utilisent des primitives de synchronisation (telles que des mutex) pour créer des sections critiques et empêcher l’accès à du 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éentrantes, 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 :
Direct3D 11 utilise par défaut thread-safe et continue à autoriser les applications à désinscrire à l’aide de D3D11 _ créer un _ SINGLETHREADED d’appareil _ . Si les applications ne peuvent pas être thread-safe, elles doivent adhérer aux règles de thread. Le runtime synchronise les threads pour le compte de l’application, ce qui permet l’exécution de threads simultanés. En fait, la synchronisation dans Direct3D 11 est plus efficace que l’utilisation de la couche thread-safe dans Direct3D 10.
Direct3D 10 peut prendre en charge l’exécution d’un seul thread à la fois. Direct3D 10 est entièrement sécurisé au niveau du thread et permet à une application de refuser ce comportement à l’aide de l’D3D10 _ créer un _ appareil à _ _ thread unique.
Direct3D 9 n’utilise pas la valeur par défaut thread-safe. Toutefois, lorsque vous appelez CreateDevice ou CreateDeviceEx pour créer un appareil, vous pouvez spécifier l' _ indicateur multithread D3DCREATE pour rendre le thread de l’API Direct3D 9 sécurisé. Cela entraîne une surcharge de synchronisation importante. Par conséquent, le fait de rendre le thread de l’API Direct3D 9 sécurisé n’est pas recommandé, car les performances peuvent être dégradées.

MultiThreading