Namespaces
Variants

std:: condition_variable_any

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
condition_variable_any
(C++11)
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
Definiert im Header <condition_variable>
class condition_variable_any ;
(seit C++11)

Die condition_variable_any -Klasse ist eine Verallgemeinerung von std::condition_variable . Während std::condition_variable nur mit std:: unique_lock < std:: mutex > funktioniert, 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 Condition Variables.

Die Klasse std::condition_variable_any ist ein StandardLayoutType . Sie ist nicht CopyConstructible , MoveConstructible , CopyAssignable oder MoveAssignable .

Wenn die Sperre ein std:: unique_lock < std:: mutex > ist, kann std::condition_variable eine bessere Leistung bieten.

Inhaltsverzeichnis

Memberfunktionen

konstruiert das Objekt
(public member function)
zerstört das Objekt
(public member function)
operator=
[deleted]
nicht kopierbar zuweisbar
(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 Condition Variable aufgeweckt wird
(public member function)
blockiert den aktuellen Thread, bis die Condition Variable aufgeweckt wird oder nach Ablauf der angegebenen Timeout-Dauer
(public member function)
blockiert den aktuellen Thread, bis die Condition Variable aufgeweckt wird oder bis der angegebene Zeitpunkt erreicht wurde
(public member function)

Hinweise

std::condition_variable_any kann mit std::shared_lock verwendet werden, um auf ein std::shared_mutex im Shared-Ownership-Modus zu warten.

Eine mögliche Verwendung für std::condition_variable_any mit benutzerdefinierten Lockable Typen ist die Bereitstellung von bequemen unterbrechbaren Warteoperationen: Der benutzerdefinierte Sperrvorgang würde sowohl den zugehörigen Mutex wie erwartet sperren als auch die notwendige Einrichtung durchführen, um diese Bedingungsvariable zu benachrichtigen, wenn das unterbrechende Signal empfangen wird. [1]

Siehe auch

stellt eine Bedingungsvariable bereit, die mit einem std::unique_lock assoziiert ist
(Klasse)

Externe Links

  1. Anthony Williams (2012, 1. Aufl./ 2019, 2. Aufl.), "C++ Concurrency in Action", 9.2.4 "Unterbrechen eines Wartevorgangs auf std::condition_variable_any ".