Namensräume
Varianten
Aktionen

std::condition_variable_any

Von cppreference.com
< cpp‎ | thread
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
condition_variable_any
(C++11)
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
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) [bearbeiten]
destruiert das Objekt
(public member function) [bearbeiten]
operator=
[gelöscht]
nicht kopierbar
(public member function) [bearbeiten]
Benachrichtigung
benachrichtigt einen wartenden Thread
(public member function) [bearbeiten]
benachrichtigt alle wartenden Threads
(public member function) [bearbeiten]
Warten
blockiert den aktuellen Thread, bis die Bedingungsvariable geweckt wird
(public member function) [bearbeiten]
blockiert den aktuellen Thread, bis die Bedingungsvariable geweckt wird oder nach Ablauf der angegebenen Timeout-Dauer
(public member function) [bearbeiten]
blockiert den aktuellen Thread, bis die Bedingungsvariable geweckt wird oder bis der angegebene Zeitpunkt erreicht ist
(public member function) [bearbeiten]

[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

bietet eine Bedingungsvariable, die mit einem std::unique_lock verbunden ist
(Klasse) [bearbeiten]

[bearbeiten] Externe Links

  1. Anthony Williams (2012, 1. Aufl./ 2019, 2. Aufl.), „C++ Concurrency in Action“, 9.2.4 „Interrupting a wait on std::condition_variable_any“.