Novità della sincronizzazione

Windows include i nuovi elementi di programmazione seguenti per la sincronizzazione.

Windows 8

Funzioni nuove

DeleteSynchronizationBarrier

Elimina una barriera di sincronizzazione.

EnterSynchronizationBarrier

Causa l'attesa del thread chiamante in una barriera di sincronizzazione fino al numero massimo di thread immessi nella barriera.

GetOverlappedResultEx

Recupera i risultati di un'operazione sovrapposta nel file specificato, denominata pipe o dispositivo di comunicazione entro l'intervallo di timeout specificato. Il thread chiamante può eseguire un'attesa avvisabile.

InitializeSynchronizationBarrier

Specifica il numero massimo di thread e conteggio di spin per una nuova barriera di sincronizzazione.

WaitOnAddress

Attende che il valore all'indirizzo specificato venga modificato.

WakeByAddressAll

Riattiva tutti i thread in attesa del valore di un indirizzo da modificare.

WakeByAddressSingle

Riattiva un thread in attesa del valore di un indirizzo da modificare.

Nuove funzioni interlocked

InterlockedAddNoFence

Esegue un'operazione di aggiunta atomica sui valori LONG specificati. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedAddNoFence64

Esegue un'operazione di aggiunta atomica sui valori LONGLONG specificati. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedAndNoFence

Esegue un'operazione ATOMIC AND sui valori LONG specificati. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedAnd8NoFence

Esegue un'operazione ATOMIC AND sui valori char specificati. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedAnd16NoFence

Esegue un'operazione ATOMIC AND sui valori SHORT specificati. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedAnd64NoFence

Esegue un'operazione ATOMIC AND sui valori LONGLONG specificati. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedBitTestAndComplement64

Verifica il bit specificato del valore LONG64 specificato e lo integra. L'operazione è atomica.

InterlockedBitTestAndResetAcquire

Verifica il bit specificato del valore LONG specificato e lo imposta su 0. L'operazione è atomica e viene eseguita con la semantica di acquisizione dell'ordinamento della memoria.

InterlockedBitTestAndResetRelease

Verifica il bit specificato del valore LONG specificato e lo imposta su 0. L'operazione è atomica e viene eseguita usando la semantica della versione della memoria.

InterlockedBitTestAndSetAcquire

Verifica il bit specificato del valore LONG specificato e lo imposta su 1. L'operazione è atomica e viene eseguita con la semantica di acquisizione dell'ordinamento della memoria.

InterlockedBitTestAndSetRelease

Verifica il bit specificato del valore LONG specificato e lo imposta su 1. L'operazione è atomica e viene eseguita con la semantica di ordinamento della memoria di rilascio.

InterlockedCompareExchangeNoFence

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori e scambi a 32 bit specificati con un altro valore a 32 bit in base al risultato del confronto. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedCompareExchange16

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori e scambi a 16 bit specificati con un altro valore a 16 bit in base al risultato del confronto.

InterlockedCompareExchange16Acquire

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori e scambi a 16 bit specificati con un altro valore a 16 bit in base al risultato del confronto. L'operazione viene eseguita con acquisire la semantica di ordinamento della memoria.

InterlockedCompareExchange16Release

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori e scambi a 16 bit specificati con un altro valore a 16 bit in base al risultato del confronto. Lo scambio viene eseguito con la semantica di ordinamento della memoria di rilascio.

InterlockedCompareExchange16NoFence

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori e scambi a 16 bit specificati con un altro valore a 16 bit in base al risultato del confronto. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedCompareExchangeNoFence64

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori a 64 bit specificati e scambia con un altro valore a 64 bit in base al risultato del confronto. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedCompareExchange128

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori a 128 bit specificati e scambia con un altro valore a 128 bit in base al risultato del confronto.

InterlockedCompareExchangePointerNoFence

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori di puntatore e scambi specificati con un altro valore puntatore in base al risultato del confronto. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedDecrementNoFence

Decrementi (diminuisce per uno) il valore della variabile a 32 bit specificata come operazione atomica. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedDecrement16

Decrementi (diminuisce per uno) il valore della variabile a 16 bit specificata come operazione atomica.

InterlockedDecrement16Acquire

Decrementi (diminuisce per uno) il valore della variabile a 16 bit specificata come operazione atomica. L'operazione viene eseguita con acquisire la semantica di ordinamento della memoria.

InterlockedDecrement16Release

Decrementi (diminuisce per uno) il valore della variabile a 16 bit specificata come operazione atomica. L'operazione viene eseguita con la semantica di ordinamento della memoria di rilascio.

InterlockedDecrement16NoFence

Decrementi (diminuisce per uno) il valore della variabile a 16 bit specificata come operazione atomica. L'operazione viene eseguita atomicamente, ma senza usare barriere di memoria.

InterlockedDecrementNoFence64

Decrementa (diminuisce di uno) il valore della variabile a 64 bit specificata come operazione atomica. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedExchangeNoFence

Imposta una variabile a 64 bit sul valore specificato come operazione atomica. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedExchange8

Imposta una variabile a 8 bit sul valore specificato come operazione atomica.

InterlockedExchange16Acquire

Imposta una variabile a 16 bit sul valore specificato come operazione atomica. L'operazione viene eseguita usando la semantica di ordinamento della memoria.

InterlockedExchange16NoFence

Imposta una variabile a 16 bit sul valore specificato come operazione atomica. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedExchangeNoFence64

Imposta una variabile a 64 bit sul valore specificato come operazione atomica. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedExchangePointerNoFence

Scambia atomicamente una coppia di indirizzi. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedExchangeAddNoFence

Esegue un'aggiunta atomica di due valori a 32 bit. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedExchangeAddNoFence64

Esegue un'aggiunta atomica di due valori a 64 bit. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedIncrementNoFence

Incrementi (aumenta di uno) il valore della variabile a 32 bit specificata come operazione atomica. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedIncrement16

Incrementa (aumenta di uno) il valore della variabile a 16 bit specificata come operazione atomica.

InterlockedIncrement16Acquire

Incrementa (aumenta di uno) il valore della variabile a 16 bit specificata come operazione atomica. L'operazione viene eseguita usando la semantica di ordinamento della memoria.

InterlockedIncrement16Release

Incrementa (aumenta di uno) il valore della variabile a 16 bit specificata come operazione atomica. L'operazione viene eseguita usando la semantica di ordinamento della memoria di rilascio.

InterlockedIncrement16NoFence

Incrementa (aumenta di uno) il valore della variabile a 16 bit specificata come operazione atomica. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedIncrementNoFence64

Incrementi (aumenta di uno) il valore della variabile a 64 bit specificata come operazione atomica. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedOrNoFence

Esegue un'operazione OR atomica sui valori LONG specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedOr8NoFence

Esegue un'operazione OR atomica sui valori char specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedOr16NoFence

Esegue un'operazione OR atomica sui valori SHORT specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedOr64NoFence

Esegue un'operazione OR atomica sui valori DI LONGLONG specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedPushListSListEx

Inserisce un elenco collegato singly all'inizio di un altro elenco collegato singly. L'accesso agli elenchi viene sincronizzato in un sistema multiprocessore. Questa versione del metodo non usa la convenzione di chiamata __fastcall .

InterlockedXorNoFence

Esegue un'operazione XOR atomica sui valori LONG specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedXor8NoFence

Esegue un'operazione XOR atomica sui valori char specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedXor16NoFence

Esegue un'operazione XOR atomica sui valori SHORT specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedXor64NoFence

Esegue un'operazione XOR atomica sui valori DI LONGLONG specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

Windows 7

Funzioni nuove

SetWaitableTimerEx

Attiva il timer waitable specificato e fornisce informazioni di contesto per il timer.

TryAcquireSRWLockExclusive

Tenta di acquisire un blocco di lettura/scrittura sottile (SRW) in modalità esclusiva. Se la chiamata ha esito positivo, il thread chiamante assume la proprietà del blocco.

TryAcquireSRWLockShared

Tenta di acquisire un blocco di lettura/scrittura sottile (SRW) in modalità condivisa. Se la chiamata ha esito positivo, il thread chiamante assume la proprietà del blocco.

Nuove strutture

REASON_CONTEXT

Contiene informazioni di contesto per un timer attivato con SetWaitableTimerEx.