Partager via


Nouveautés de la synchronisation

Windows inclut les nouveaux éléments de programmation suivants pour la synchronisation.

Windows 8

Nouvelles fonctions

DeleteSynchronizationBarrier

Supprime un obstacle de synchronisation.

EnterSynchronizationBarrier

Fait attendre le thread appelant au niveau d’une barrière de synchronisation jusqu’à ce que le nombre maximal de threads soit entré dans la barrière.

GetOverlappedResultEx

Récupère les résultats d’une opération qui se chevauche sur le fichier, le canal nommé ou le périphérique de communication spécifié dans l’intervalle de délai d’attente spécifié. Le thread appelant peut effectuer une attente pouvant être alertable.

InitializeSynchronizationBarrier

Spécifie le nombre maximal de threads et le nombre de spins pour une nouvelle barrière de synchronisation.

WaitOnAddress

Attend que la valeur à l’adresse spécifiée change.

WakeByAddressAll

Réveille tous les threads qui attendent que la valeur d’une adresse change.

WakeByAddressSingle

Réveille un thread qui attend que la valeur d’une adresse change.

Nouvelles fonctions interblocées

InterlockedAddNoFence

Effectue une opération d’addition atomique sur les valeurs LONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedAddNoFence64

Effectue une opération d’addition atomique sur les valeurs LONGLONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedAndNoFence

Effectue une opération AND atomique sur les valeurs LONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedAnd8NoFence

Effectue une opération AND atomique sur les valeurs char spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedAnd16NoFence

Effectue une opération AND atomique sur les valeurs SHORT spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedAnd64NoFence

Effectue une opération AND atomique sur les valeurs LONGLONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedBitTestAndComplement64

Teste le bit spécifié de la valeur LONG64 spécifiée et le complète. L'opération est atomique.

InterlockedBitTestAndResetAcquire

Teste le bit spécifié de la valeur LONG spécifiée et lui affecte la valeur 0. L’opération est atomique et elle est effectuée avec la sémantique d’acquisition de l’ordre de la mémoire.

InterlockedBitTestAndResetRelease

Teste le bit spécifié de la valeur LONG spécifiée et lui affecte la valeur 0. L’opération est atomique et est effectuée à l’aide de la sémantique de libération de mémoire.

InterlockedBitTestAndSetAcquire

Teste le bit spécifié de la valeur LONG spécifiée et lui affecte la valeur 1. L’opération est atomique et elle est effectuée avec la sémantique d’acquisition de l’ordre de la mémoire.

InterlockedBitTestAndSetRelease

Teste le bit spécifié de la valeur LONG spécifiée et lui affecte la valeur 1. L’opération est atomique, et elle est effectuée avec la sémantique de classement de la mémoire de mise en production.

InterlockedCompareExchangeNoFence

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs 32 bits et échanges spécifiés avec une autre valeur 32 bits en fonction du résultat de la comparaison. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedCompareExchange16

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs 16 bits spécifiées et les échanges avec une autre valeur de 16 bits en fonction du résultat de la comparaison.

InterlockedCompareExchange16Acquire

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs 16 bits spécifiées et les échanges avec une autre valeur de 16 bits en fonction du résultat de la comparaison. L’opération est effectuée avec la sémantique d’acquisition de l’ordre de la mémoire.

InterlockedCompareExchange16Release

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs 16 bits spécifiées et les échanges avec une autre valeur de 16 bits en fonction du résultat de la comparaison. L’échange est effectué avec la sémantique de classement de la mémoire de mise en production.

InterlockedCompareExchange16NoFence

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs 16 bits spécifiées et les échanges avec une autre valeur de 16 bits en fonction du résultat de la comparaison. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedCompareExchangeNoFence64

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs 64 bits et échanges spécifiés avec une autre valeur 64 bits en fonction du résultat de la comparaison. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedCompareExchange128

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs et échanges 128 bits spécifiés avec une autre valeur de 128 bits en fonction du résultat de la comparaison.

InterlockedCompareExchangePointerNoFence

Effectue une opération de comparaison et d’échange atomique sur les valeurs spécifiées. La fonction compare deux valeurs de pointeur spécifiées et échange avec une autre valeur de pointeur en fonction du résultat de la comparaison. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedDecrementNoFence

Décrémente (diminue d’un) la valeur de la variable 32 bits spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedDecrement16

Décrémente (diminue d’un) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique.

InterlockedDecrement16Acquire

Décrémente (diminue d’un) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique. L’opération est effectuée avec la sémantique d’acquisition de l’ordre de la mémoire.

InterlockedDecrement16Release

Décrémente (diminue d’un) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique. L’opération est effectuée avec la sémantique de classement de la mémoire de mise en production.

InterlockedDecrement16NoFence

Décrémente (diminue d’un) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedDecrementNoFence64

Décrémente (diminue d’un) la valeur de la variable 64 bits spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedExchangeNoFence

Définit une variable 64 bits sur la valeur spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedExchange8

Définit une variable 8 bits sur la valeur spécifiée en tant qu’opération atomique.

InterlockedExchange16Acquire

Définit une variable 16 bits sur la valeur spécifiée en tant qu’opération atomique. L’opération est effectuée à l’aide de la sémantique d’acquisition de l’ordre de la mémoire.

InterlockedExchange16NoFence

Définit une variable 16 bits sur la valeur spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedExchangeNoFence64

Définit une variable 64 bits sur la valeur spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedExchangePointerNoFence

Échange atomiquement une paire d’adresses. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedExchangeAddNoFence

Effectue un ajout atomique de deux valeurs 32 bits. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedExchangeAddNoFence64

Effectue un ajout atomique de deux valeurs 64 bits. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedIncrementNoFence

Incrémente (augmente d’un) la valeur de la variable 32 bits spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedIncrement16

Incrémente (augmente de 1) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique.

InterlockedIncrement16Acquire

Incrémente (augmente de 1) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique. L’opération est effectuée à l’aide de la sémantique d’acquisition de l’ordre de la mémoire.

InterlockedIncrement16Release

Incrémente (augmente de 1) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique. L’opération est effectuée à l’aide de la sémantique de classement de la mémoire de mise en production.

InterlockedIncrement16NoFence

Incrémente (augmente de 1) la valeur de la variable 16 bits spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedIncrementNoFence64

Incrémente (augmente d’un) la valeur de la variable 64 bits spécifiée en tant qu’opération atomique. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedOrNoFence

Effectue une opération OU atomique sur les valeurs LONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedOr8NoFence

Effectue une opération OU atomique sur les valeurs char spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedOr16NoFence

Effectue une opération OU atomique sur les valeurs SHORT spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedOr64NoFence

Effectue une opération OR atomique sur les valeurs LONGLONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedPushListSListEx

Insère une liste liée séparément au début d’une autre liste liée séparément. L’accès aux listes est synchronisé sur un système multiprocesseur. Cette version de la méthode n’utilise pas la convention d’appel __fastcall .

InterlockedXorNoFence

Effectue une opération XOR atomique sur les valeurs LONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedXor8NoFence

Effectue une opération XOR atomique sur les valeurs char spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedXor16NoFence

Effectue une opération XOR atomique sur les valeurs SHORT spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

InterlockedXor64NoFence

Effectue une opération XOR atomique sur les valeurs LONGLONG spécifiées. L’opération est effectuée atomiquement, mais sans utiliser de barrières de mémoire.

Windows 7

Nouvelles fonctions

SetWaitableTimerEx

Active le minuteur d’attente spécifié et fournit des informations de contexte pour le minuteur.

TryAcquireSRWLockExclusive

Tente d’acquérir un verrou de lecteur/enregistreur (SRW) en mode exclusif. Si l’appel réussit, le thread appelant prend la propriété du verrou.

TryAcquireSRWLockShared

Tente d’acquérir un verrou de lecteur/enregistreur mince (SRW) en mode partagé. Si l’appel réussit, le thread appelant prend la propriété du verrou.

Nouvelles structures

REASON_CONTEXT

Contient des informations de contexte pour un minuteur activé avec SetWaitableTimerEx.