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 erreicht hat.

GetOverlappedResultEx

Ruft die Ergebnisse eines überlappenden Vorgangs für die angegebene Datei, die benannte Pipe oder das Kommunikationsgerät innerhalb des angegebenen Time out-Intervalls ab. Der aufrufende Thread kann eine warnungsfähige Wartezeit ausführen.

InitializeSynchronizationBarrier

Gibt die maximale Anzahl von Threads und die Drehanzahl für eine neue Synchronisierungsbarriere an.

WaitOnAddress

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

WakeByAddressAll

Aktiviert alle Threads, die auf die Änderung des Werts einer Adresse warten.

WakeByAddressSingle

Aktiviert einen Thread, der auf die Änderung des Werts einer Adresse wartet.

Neue interlocked Functions

InterlockedAddNoFence

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

InterlockedAddNoFence64

Führt einen atomaren 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 char-Werte 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 es. Der Vorgang ist atomarisch.

InterlockedBitTestAndResetAcquire

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

InterlockedBitTestAndResetRelease

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

InterlockedBitTestAndSetAcquire

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

InterlockedBitTestAndSetRelease

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

InterlockedCompareExchangeNoFence

Führt einen atomaren 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 atomaren 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 atomaren 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 semantischem Abrufen der Speicherreihenfolge ausgeführt.

InterlockedCompareExchange16Release

Führt einen atomaren 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 erfolgt mit Semantik für die Speicherreihenfolge von Freigaben.

InterlockedCompareExchange16NoFence

Führt einen atomaren 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 atomaren 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 weiteren 64-Bit-Wert aus. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedCompareExchange128

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

InterlockedCompareExchangePointerNoFence

Führt einen atomaren 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

Dekrementiert (verringert sich um eins) den Wert der angegebenen 32-Bit-Variablen als atomarer Vorgang. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedDecrement16

Dekrementiert (verringert sich um eins) den Wert der angegebenen 16-Bit-Variablen als atomarer Vorgang.

InterlockedDecrement16Acquire

Dekrementiert (verringert sich um eins) den Wert der angegebenen 16-Bit-Variablen als atomarer Vorgang. Der Vorgang wird mit semantischem Abrufen der Speicherreihenfolge ausgeführt.

InterlockedDecrement16Release

Dekrementiert (verringert sich um eins) den Wert der angegebenen 16-Bit-Variablen als atomarer Vorgang. Der Vorgang wird mit semantischer Reihenfolge des Freigabespeichers ausgeführt.

InterlockedDecrement16NoFence

Dekrementiert (verringert sich um eins) den Wert der angegebenen 16-Bit-Variablen als atomarer Vorgang. Der Vorgang wird atomar ausgeführt, jedoch ohne Speicherbarrieren.

InterlockedDecrementNoFence64

Dekrementiert (verringert) den Wert der angegebenen 64-Bit-Variablen als atomare Operation. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedExchangeNoFence

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

InterlockedExchange8

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

InterlockedExchange16Acquire

Legt eine 16-Bit-Variable als atomaren Vorgang auf den angegebenen Wert fest. Der Vorgang wird mithilfe der Semantik für die Speicherbestellung ausgeführt.

InterlockedExchange16NoFence

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

InterlockedExchangeNoFence64

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

InterlockedExchangePointerNoFence

Tauscht ein Adresspaar atomisch aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedExchangeAddNoFence

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

InterlockedExchangeAddNoFence64

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

InterlockedIncrementNoFence

Erhöht (um eins) den Wert der angegebenen 32-Bit-Variablen als atomare Operation. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedIncrement16

Erhöht (um eins) den Wert der angegebenen 16-Bit-Variablen als atomare Operation.

InterlockedIncrement16Acquire

Erhöht (um eins) den Wert der angegebenen 16-Bit-Variablen als atomare Operation. Der Vorgang wird mithilfe der Semantik für die Speicherbestellung ausgeführt.

InterlockedIncrement16Release

Erhöht (um eins) den Wert der angegebenen 16-Bit-Variablen als atomare Operation. Der Vorgang wird mithilfe der Semantik für die Freigabespeicherbestellung ausgeführt.

InterlockedIncrement16NoFence

Erhöht (um eins) den Wert der angegebenen 16-Bit-Variablen als atomare Operation. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedIncrementNoFence64

Erhöht (um eins) den Wert der angegebenen 64-Bit-Variablen als atomare Operation. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedOrNoFence

Führt einen atomaren OR-Vorgang für die angegebenen LONG-Werte aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedOr8NoFence

Führt einen atomaren OR-Vorgang für die angegebenen char-Werte aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedOr16NoFence

Führt einen atomaren OR-Vorgang für die angegebenen SHORT-Werte aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedOr64NoFence

Führt einen atomaren OR-Vorgang für die angegebenen LONGLONG-Werte aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedPushListSListEx

Fügt eine singly-linked-Liste am Anfang einer anderen singly linked-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 atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedXor8NoFence

Führt einen atomaren XOR-Vorgang für die angegebenen char-Werte aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedXor16NoFence

Führt einen atomaren XOR-Vorgang für die angegebenen SHORT-Werte aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

InterlockedXor64NoFence

Führt einen atomaren XOR-Vorgang für die angegebenen LONGLONG-Werte aus. Der Vorgang wird atomisch, aber ohne Verwendung von Speicherbarrieren ausgeführt.

Windows 7

Neue Funktionen

SetWaitableTimerEx

Aktiviert den angegebenen wartebaren Timer und stellt Kontextinformationen für den Timer zur Verfügung.

TryAcquireSRWLockExclusive

Versucht, eine SRW-Sperre (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 (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 Mit SetWaitableTimerEx aktivierten Timer.