Dela via


Nyheter i synkronisering

Windows innehåller följande nya programmeringselement för synkronisering.

Windows 8

Nya funktioner

TaBortSynkroniseringsbarriär

Tar bort en synkroniseringsbarriär.

EnterSynchronizationBarrier

Gör att den anropande tråden väntar vid en synkroniseringsbarriär tills det maximala antalet trådar har gått in i barriären.

GetOverlappedResultEx

Hämtar resultatet av en överlappande åtgärd på den angivna filen, namngiven pipe eller kommunikationsenhet inom det angivna tidsgränsintervallet. Den anropande tråden kan utföra en aviseringsbar väntan.

InitieraSynkroniseringsbarriär

Anger det maximala antalet trådar och antal spinn för en ny synkroniseringsbarriär.

WaitOnAddress

Väntar på att värdet på den angivna adressen ska ändras.

WakeByAddressAll

Aktiverar alla trådar som väntar på att värdet för en adress ska ändras.

WakeByAddressSingle

Aktiverar en tråd som väntar på att värdet för en adress ska ändras.

Nya sammankopplade funktioner

InterlockedAddNoFence

Utför en atomisk additionsåtgärd på angivna LONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedAddNoFence64

Utför en atomisk additionsåtgärd på angivna LONGLONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedAndNoFence

Utför en atomisk AND-åtgärd på angivna LONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedAnd8NoFence

Utför en atomisk AND-åtgärd på angivna tecken värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedAnd16NoFence

Utför en atomisk AND-åtgärd på angivna SHORT- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedAnd64NoFence

Utför en atomisk AND-åtgärd på angivna LONGLONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedBitTestAndComplement64

Testar den angivna biten av det angivna värdet LONG64 och kompletterar det. Åtgärden är atomisk.

InterlockedBitTestOchÅterställFå

Testar den angivna biten av det angivna värdet LONG och anger det till 0. Åtgärden är atomisk och utförs med hämtad minnesordningssemantik.

InterlockedBitTestAndResetRelease

Testar den angivna biten av det angivna värdet LONG och anger det till 0. Åtgärden är atomisk och utförs med minnesfrisläppningssemantik.

InterlockedBitTestAndSetAcquire

Testar den angivna biten av det angivna värdet LONG och anger det till 1. Åtgärden är atomisk och utförs med hämtad minnesordningssemantik.

InterlockedBitTestAndSetRelease

Testar den angivna biten av det angivna värdet LONG och anger det till 1. Åtgärden är atomisk och utförs med en release-minnesordningssemantik.

InterlockedCompareExchangeNoFence

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna 32-bitarsvärden och utbyter med ett annat 32-bitarsvärde baserat på resultatet av jämförelsen. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedCompareExchange16

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna 16-bitarsvärden och utbyter med ett annat 16-bitarsvärde baserat på resultatet av jämförelsen.

InterlockedCompareExchange16Acquire

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna 16-bitarsvärden och utbyter med ett annat 16-bitarsvärde baserat på resultatet av jämförelsen. Åtgärden utförs med hämta minnesordningssemantik.

InterlockedCompareExchange16Release

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna 16-bitarsvärden och utbyter med ett annat 16-bitarsvärde baserat på resultatet av jämförelsen. Utbytet utförs med versionsminnesordningssemantik.

InterlockedCompareExchange16NoFence

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna 16-bitarsvärden och utbyter med ett annat 16-bitarsvärde baserat på resultatet av jämförelsen. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedCompareExchangeNoFence64

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna 64-bitarsvärden och utbyter med ett annat 64-bitarsvärde baserat på resultatet av jämförelsen. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedCompareExchange128

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna 128-bitarsvärden och utbyter med ytterligare ett 128-bitarsvärde baserat på resultatet av jämförelsen.

InterlockedCompareExchangePointerNoFence

Utför en atomisk jämförelse- och utbytesåtgärd på de angivna värdena. Funktionen jämför två angivna pekarvärden och utbyten med ett annat pekarvärde baserat på resultatet av jämförelsen. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedDecrementNoFence

Decrementerar värdet för den angivna 32-bitarsvariabeln som en atomär operation. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedDecrement16

Minskar värdet på den angivna 16-bitarsvariabeln med ett som en atomisk operation.

InterlockedDecrement16Acquire

Minskar värdet på den angivna 16-bitarsvariabeln med ett som en atomär operation. Åtgärden utförs med hämta minnesordningssemantik.

InterlockedDecrement16Release

Minskar värdet för den angivna 16-bitarsvariabeln som en atomisk operation. Åtgärden utförs med versionsminnesordningssemantik.

InterlockedDecrement16NoFence

Minskar värdet för den angivna 16-bitarsvariabeln som en atomisk operation. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedDecrementNoFence64

Minskar (minskar med ett) värdet för den angivna 64-bitarsvariabeln som en atomär operation. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedExchangeNoFence

Anger en 64-bitarsvariabel till det angivna värdet som en atomisk åtgärd. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedExchange8

Anger en 8-bitarsvariabel till det angivna värdet som en atomisk åtgärd.

InterlockedExchange16Acquire

Anger en 16-bitars variabel till det angivna värdet som en atomisk åtgärd. Åtgärden utförs med hjälp av hämta minnesordningssemantik.

InterlockedExchange16NoFence

Anger en 16-bitars variabel till det angivna värdet som en atomisk åtgärd. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedExchangeNoFence64

Anger en 64-bitarsvariabel till det angivna värdet som en atomisk åtgärd. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedExchangePointerNoFence

Atomiskt utbyter ett par adresser. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedExchangeAddNoFence

Utför en atomisk addition av två 32-bitarsvärden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedExchangeAddNoFence64

Utför en atomisk addition av två 64-bitarsvärden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedIncrementNoFence

Ökar (ökar med en) värdet för den angivna 32-bitarsvariabeln som en atomisk åtgärd. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedIncrement16

Ökar (ökar med en) värdet för den angivna 16-bitarsvariabeln som en atomisk åtgärd.

InterlockedIncrement16Acquire

Ökar (ökar med en) värdet för den angivna 16-bitarsvariabeln som en atomisk åtgärd. Åtgärden utförs med hjälp av hämta minnesordningssemantik.

InterlockedIncrement16Release

Ökar (ökar med en) värdet för den angivna 16-bitarsvariabeln som en atomisk åtgärd. Åtgärden utförs med hjälp av versionsminnesordningssemantik.

InterlockedIncrement16NoFence

Ökar (ökar med en) värdet för den angivna 16-bitarsvariabeln som en atomisk åtgärd. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedIncrementNoFence64

Ökar (ökar med en) värdet för den angivna 64-bitarsvariabeln som en atomisk åtgärd. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedOrNoFence

Utför en atomisk ELLER-åtgärd på angivna LONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedOr8NoFence

Utför en atomisk OR-åtgärd på angivna tecken värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedOr16NoFence

Utför en atomisk ELLER-åtgärd på angivna SHORT- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedOr64NoFence

Utför en atomisk ELLER-åtgärd på angivna LONGLONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedPushListSListEx

Infogar en enkel-länkad lista i början av en annan enkel-länkad lista. Åtkomsten till listorna synkroniseras i ett system med flera processorer. Den här versionen av metoden använder inte __fastcall-anropskonventionen.

InterlockedXorNoFence

Utför en atomisk XOR-åtgärd på angivna LONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedXor8NoFence

Utför en atomisk XOR-åtgärd på angivna tecken värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedXor16NoFence

Utför en atomisk XOR-åtgärd på angivna SHORT- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

InterlockedXor64NoFence

Utför en atomisk XOR-åtgärd på de angivna LONGLONG- värden. Åtgärden utförs atomiskt, men utan minnesbarriärer.

Windows 7

Nya funktioner

SetWaitableTimerEx

Aktiverar den angivna väntetidstimern och ger kontextinformation för timern.

FörsökLåsSRWExklusivt

Försöker skaffa sig ett SRW-lås (Slim Reader/Writer) i exklusivt läge. Om anropet lyckas tar den anropande tråden över ägarskapet för låset.

TryAcquireSRWLockShared

Försöker erhålla ett Slim Reader/Writer-lås (SRW) i delat läge. Om anropet lyckas tar den anropande tråden över ägarskapet för låset.

Nya strukturer

REASON_CONTEXT

Innehåller kontextinformation för en timer som aktiveras med SetWaitableTimerEx.