Condividi tramite


Novità della sincronizzazione

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

Windows 8

Nuove funzioni

DeleteSynchronizationBarrier

Elimina una barriera di sincronizzazione.

EnterSynchronizationBarrier

Fa sì che il thread chiamante attenda presso una barriera di sincronizzazione fino a quando il numero massimo di thread sia entrato nella barriera.

GetOverlappedResultEx

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

InitializeSynchronizationBarrier

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

WaitOnAddress

Attende la modifica del valore in corrispondenza dell'indirizzo specificato.

WakeByAddressAll

Riattiva tutti i thread in attesa della modifica del valore di un indirizzo.

WakeByAddressSingle

Riattiva un thread in attesa della modifica del valore di un indirizzo.

Nuove funzioni interbloccate

InterlockedAddNoFence

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

InterlockedAddNoFence64

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

InterlockedAndNoFence

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

InterlockedAnd8NoFence

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

InterlockedAnd16NoFence

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

InterlockedAnd64NoFence

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

InterlockedBitTestAndComplement64

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

InterlockedBitTestAndResetAcquire

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

InterlockedBitTestAndResetRelease

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

InterlockedBitTestAndSetAcquire

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

InterlockedBitTestAndSetRelease

Verifica il bit specificato del valore di 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 a 32 bit specificati e scambia con un altro valore a 32 bit in base al risultato del confronto. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedCompareExchange16

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori a 16 bit specificati e scambia 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 a 16 bit specificati e scambia con un altro valore a 16 bit in base al risultato del confronto. L'operazione viene eseguita con la semantica di ordinamento della memoria di acquisizione.

InterlockedCompareExchange16Release

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

InterlockedCompareExchange16NoFence

Esegue un'operazione atomica di confronto e scambio sui valori specificati. La funzione confronta due valori a 16 bit specificati e scambia con un altro valore a 16 bit in base al risultato del confronto. L'operazione viene eseguita in modo atomico, 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 in modo atomico, 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 specificati e scambia con un altro valore puntatore in base al risultato del confronto. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedDecrementNoFence

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

InterlockedDecrement16

Decrementa (diminuisce il valore di uno) la variabile a 16 bit specificata come un'operazione atomica.

DecrementoInterbloccato16Acquire

Decrementa (diminuisce di uno) il valore della variabile a 16 bit specificata in modo atomico. L'operazione viene eseguita con la semantica di ordinamento della memoria di acquisizione.

InterlockedDecrement16Release

Decrementa di uno il valore della variabile a 16-bit specificata come operazione atomica. L'operazione viene eseguita con la semantica di ordinamento della memoria rilasciata.

InterlockedDecrement16NoFence

Decrementa (diminuisce di uno) il valore della variabile specificata a 16 bit come operazione atomica. L'operazione viene eseguita in modo atomico, 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 utilizzando la semantica di ordinamento della memoria di acquisizione.

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 in modo atomico 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

Incrementa (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 utilizzando la semantica di acquisizione per l'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

Incrementa (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 di 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 LONGLONG e specificati. L'operazione viene eseguita in modo atomico, ma senza usare barriere di memoria.

InterlockedPushListSListEx

Inserisce una lista concatenata semplice all'inizio di un'altra lista concatenata semplice. 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 e 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

Nuove funzioni

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 SRW (Slim Reader/Writer) 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.