Funzione InterlockedCompareExchangePointer (wdm.h)
La routine InterlockedCompareExchangePointer esegue un'operazione atomica che confronta il valore del puntatore di input a cui punta Destination con il valore del puntatore Comperand.
Sintassi
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
Parametri
[in, out] Destination
Puntatore a un valore PVOID. Se (*Destination) = Comperand, la routine imposta (*Destination) per Exchange.
[in] Exchange
Specifica il valore PVOID su cui impostare (*Destination).
[in] Comperand
Specifica il valore PVOID da confrontare con (*Destination).
Valore restituito
l' InterlockedCompareExchangePointer restituisce il valore originale del puntatore in * di destinazione, ovvero il valore di questo puntatore alla voce della routine.
Osservazioni
Se Comperand è uguale a *Destination, *Destination è impostato su uguale Exchange. In caso contrario, * di destinazione non è modificato.
l' InterlockedCompareExchangePointer offre un modo rapido e atomico per sincronizzare il test e l'aggiornamento di una variabile puntatore condivisa da più thread. Se il valore di input a cui punta Destination è uguale al valore di Comperand, il valore a cui punta Destination viene impostato sul valore di Exchange.
InterlockedCompareExchangePointer è progettato per la velocità e, in genere, viene implementato inline da un compilatore. InterlockedCompareExchangePointer è atomico solo rispetto ad altre chiamate interlockedXxx. Non usa un blocco di rotazione e può essere usato in modo sicuro nei dati di paging.
La routine interlockedCompareExchangePointer è atomica solo rispetto ad altre chiamatexxxinterlocked.
Le operazioni interlocked non possono essere usate nella memoria non memorizzata nella cache.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Disponibile a partire da Windows 2000. |
piattaforma di destinazione | Desktop |
intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL | Qualsiasi livello |