Freigeben über


Neuerungen bei der Synchronisierung

Windows enthält die folgenden neuen Programmierelemente für die Synchronisierung.

Windows 8

Neue Funktionen

DeleteSynchronizationBarrier

Löscht eine Synchronisierungsbarriere.

EnterSynchronizationBarrier

Bewirkt, dass der aufrufende Thread an einer Synchronisierungsbarriere wartet, bis die maximale Anzahl von Threads die Barriere betreten hat.

GetOverlappedResultEx

Ruft die Ergebnisse eines überlappenden Vorgangs für die angegebene Datei, named pipe oder das angegebene Kommunikationsgerät innerhalb des angegebenen Timeoutintervalls ab. Der aufrufende Thread kann eine warnbare Wartezeit ausführen.

InitializeSynchronizationBarrier

Gibt die maximale Anzahl von Threads und die Anzahl der Drehvorgänge für eine neue Synchronisierungsbarriere an.

WaitOnAddress

Wartet, bis sich der Wert an der angegebenen Adresse ändert.

WakeByAddressAll

Aktiviert alle Threads, die darauf warten, dass sich der Wert einer Adresse ändert.

WakeByAddressSingle

Aktiviert einen Thread, der darauf wartet, dass sich der Wert einer Adresse ändert.

Neue ineinandergreifene Funktionen

InterlockedAddNoFence

Führt einen atomischen Additionsvorgang für die angegebenen LONG-Werte aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedAddNoFence64

Führt einen atomischen Additionsvorgang für die angegebenen LONGLONG-Werte aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedAndNoFence

Führt einen atomaren AND-Vorgang für die angegebenen LONG-Werte aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedAnd8NoFence

Führt einen atomaren AND-Vorgang für die angegebenen Zeichenwerte aus . Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedAnd16NoFence

Führt einen atomaren AND-Vorgang für die angegebenen SHORT-Werte aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedAnd64NoFence

Führt einen atomaren AND-Vorgang für die angegebenen LONGLONG-Werte aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedBitTestAndComplement64

Testet das angegebene Bit des angegebenen LONG64-Werts und ergänzt ihn. Der Vorgang ist atomarisch.

InterlockedBitTestAndResetAcquire

Testet das angegebene Bit des angegebenen LONG-Werts und legt ihn auf 0 fest. Der Vorgang ist atomar und wird mit der Semantik zum Abrufen von Speicherreihenfolgen ausgeführt.

InterlockedBitTestAndResetRelease

Testet das angegebene Bit des angegebenen LONG-Werts und legt ihn auf 0 fest. Der Vorgang ist atomar und wird mithilfe der Speicherfreigabesemantik ausgeführt.

InterlockedBitTestAndSetAcquire

Testet das angegebene Bit des angegebenen LONG-Werts und legt ihn auf 1 fest. Der Vorgang ist atomar und wird mit der Semantik zum Abrufen von Speicherreihenfolgen ausgeführt.

InterlockedBitTestAndSetRelease

Testet das angegebene Bit des angegebenen LONG-Werts und legt ihn auf 1 fest. Der Vorgang ist atomar und wird mit semantischer Speicherreihenfolge ausgeführt.

InterlockedCompareExchangeNoFence

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 32-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 32-Bit-Wert aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedCompareExchange16

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 16-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 16-Bit-Wert aus.

InterlockedCompareExchange16Acquire

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 16-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 16-Bit-Wert aus. Der Vorgang wird mit der Semantik zum Abrufen der Speicherreihenfolge ausgeführt.

InterlockedCompareExchange16Release

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 16-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 16-Bit-Wert aus. Der Austausch wird mit semantischer Speicherreihenfolge durchgeführt.

InterlockedCompareExchange16NoFence

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 16-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 16-Bit-Wert aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedCompareExchangeNoFence64

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 64-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 64-Bit-Wert aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedCompareExchange128

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene 128-Bit-Werte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen 128-Bit-Wert aus.

InterlockedCompareExchangePointerNoFence

Führt einen atomischen Vergleichs- und Austauschvorgang für die angegebenen Werte aus. Die Funktion vergleicht zwei angegebene Zeigerwerte und tauscht basierend auf dem Ergebnis des Vergleichs mit einem anderen Zeigerwert aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedDecrementNoFence

Verringert (verringert) den Wert der angegebenen 32-Bit-Variablen als atomischen Vorgang. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedDecrement16

Verringert (verringert) den Wert der angegebenen 16-Bit-Variablen als atomischen Vorgang.

InterlockedDecrement16Acquire

Verringert (verringert) den Wert der angegebenen 16-Bit-Variablen als atomischen Vorgang. Der Vorgang wird mit der Semantik zum Abrufen der Speicherreihenfolge ausgeführt.

InterlockedDecrement16Release

Verringert (verringert) den Wert der angegebenen 16-Bit-Variablen als atomischen Vorgang. Der Vorgang wird mit semantischer Speicherreihenfolge ausgeführt.

InterlockedDecrement16NoFence

Verringert (verringert) den Wert der angegebenen 16-Bit-Variablen als atomischen Vorgang. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedDecrementNoFence64

Dekrementiert den Wert der angegebenen 64-Bit-Variablen als atomarer Vorgang( verringert) um eins. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedExchangeNoFence

Legt eine 64-Bit-Variable auf den angegebenen Wert als atomaren Vorgang fest. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedExchange8

Legt eine 8-Bit-Variable auf den angegebenen Wert als atomaren Vorgang fest.

InterlockedExchange16Acquire

Legt eine 16-Bit-Variable auf den angegebenen Wert als atomaren Vorgang fest. Der Vorgang wird mit der Semantik zum Abrufen von Speicherreihenfolgen ausgeführt.

InterlockedExchange16NoFence

Legt eine 16-Bit-Variable auf den angegebenen Wert als atomaren Vorgang fest. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedExchangeNoFence64

Legt eine 64-Bit-Variable auf den angegebenen Wert als atomaren Vorgang fest. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedExchangePointerNoFence

Atomar tauscht ein Adresspaar aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedExchangeAddNoFence

Führt eine atomare Addition von zwei 32-Bit-Werten aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedExchangeAddNoFence64

Führt eine atomare Addition von zwei 64-Bit-Werten aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedIncrementNoFence

Inkrementiert (erhöht) den Wert der angegebenen 32-Bit-Variable als atomaren Vorgang. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedIncrement16

Inkrementiert (erhöht um eins) den Wert der angegebenen 16-Bit-Variablen als atomaren Vorgang.

InterlockedIncrement16Acquire

Inkrementiert (erhöht um eins) den Wert der angegebenen 16-Bit-Variablen als atomaren Vorgang. Der Vorgang wird mit der Semantik zum Abrufen von Speicherreihenfolgen ausgeführt.

InterlockedIncrement16Release

Inkrementiert (erhöht um eins) den Wert der angegebenen 16-Bit-Variablen als atomaren Vorgang. Der Vorgang wird mithilfe der Semantik der Freigabespeicherreihenfolge ausgeführt.

InterlockedIncrement16NoFence

Inkrementiert (erhöht um eins) den Wert der angegebenen 16-Bit-Variablen als atomaren Vorgang. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedIncrementNoFence64

Erhöht (erhöht) den Wert der angegebenen 64-Bit-Variablen als atomaren Vorgang. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedOrNoFence

Führt einen atomaren OR-Vorgang für die angegebenen LONG-Werte aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedOr8NoFence

Führt einen atomaren OR-Vorgang für die angegebenen Zeichenwerte aus . Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedOr16NoFence

Führt einen atomaren OR-Vorgang für die angegebenen SHORT-Werte aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedOr64NoFence

Führt einen atomaren OR-Vorgang für die angegebenen LONGLONG-Werte aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedPushListSListEx

Fügt eine singly-verknüpfte Liste an der Vorderseite einer anderen singly verknüpften Liste ein. Der Zugriff auf die Listen wird auf einem Multiprozessorsystem synchronisiert. Diese Version der Methode verwendet nicht die __fastcall Aufrufkonvention.

InterlockedXorNoFence

Führt einen atomaren XOR-Vorgang für die angegebenen LONG-Werte aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedXor8NoFence

Führt einen atomaren XOR-Vorgang für die angegebenen Zeichenwerte aus . Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedXor16NoFence

Führt einen atomaren XOR-Vorgang für die angegebenen SHORT-Werte aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

InterlockedXor64NoFence

Führt einen atomaren XOR-Vorgang für die angegebenen LONGLONG-Werte aus. Der Vorgang wird atomar ausgeführt, aber ohne Speicherbarrieren zu verwenden.

Windows 7

Neue Funktionen

SetWaitableTimerEx

Aktiviert den angegebenen wartebaren Timer und stellt Kontextinformationen für den Timer bereit.

TryAcquireSRWLockExclusive

Versucht, eine SRW-Sperre (Slim Reader/Writer) im exklusiven Modus zu erhalten. Wenn der Aufruf erfolgreich ist, übernimmt der aufrufende Thread den Besitz der Sperre.

TryAcquireSRWLockShared

Versucht, eine SRW-Sperre (Slim Reader/Writer) im freigegebenen Modus zu erhalten. Wenn der Aufruf erfolgreich ist, übernimmt der aufrufende Thread den Besitz der Sperre.

Neue Strukturen

REASON_CONTEXT

Enthält Kontextinformationen für einen Timer, der mit SetWaitableTimerEx aktiviert wurde.