std::condition_variable_any
| Definiert im Header <condition_variable> |
||
| class condition_variable_any; |
(seit C++11) | |
Die Klasse condition_variable_any ist eine Verallgemeinerung von std::condition_variable. Während std::condition_variable nur mit std::unique_lock<std::mutex> arbeitet, kann condition_variable_any mit jeder Sperre arbeiten, die die BasicLockable-Anforderungen erfüllt.
Siehe std::condition_variable für die Beschreibung der Semantik von Bedingungsvariablen.
Die Klasse std::condition_variable_any ist ein StandardLayoutType. Sie ist nicht CopyConstructible, MoveConstructible, CopyAssignable oder MoveAssignable.
Wenn die Sperre eine std::unique_lock<std::mutex> ist, kann std::condition_variable eine bessere Leistung bieten.
Inhalt |
[bearbeiten] Memberfunktionen
| konstruiert das Objekt (public member function) | |
| destruiert das Objekt (public member function) | |
| operator= [gelöscht] |
nicht kopierbar (public member function) |
Benachrichtigung | |
| benachrichtigt einen wartenden Thread (public member function) | |
| benachrichtigt alle wartenden Threads (public member function) | |
Warten | |
| blockiert den aktuellen Thread, bis die Bedingungsvariable geweckt wird (public member function) | |
| blockiert den aktuellen Thread, bis die Bedingungsvariable geweckt wird oder nach Ablauf der angegebenen Timeout-Dauer (public member function) | |
| blockiert den aktuellen Thread, bis die Bedingungsvariable geweckt wird oder bis der angegebene Zeitpunkt erreicht ist (public member function) | |
[bearbeiten] Hinweise
std::condition_variable_any kann mit std::shared_lock verwendet werden, um auf einem std::shared_mutex im Shared-Ownership-Modus zu warten.
Ein möglicher Anwendungsfall für std::condition_variable_any mit benutzerdefinierten Lockable-Typen ist die Bereitstellung bequemer unterbrechbarer Wartevorgänge: Die benutzerdefinierte Sperroperation würde sowohl die zugehörige Mutex wie erwartet sperren als auch die notwendige Einrichtung durchführen, um diese Bedingungsvariable zu benachrichtigen, wenn das unterbrechende Signal empfangen wird.[1]
[bearbeiten] Siehe auch
| (C++11) |
bietet eine Bedingungsvariable, die mit einem std::unique_lock verbunden ist (Klasse) |
[bearbeiten] Externe Links
|