C++ benannte Anforderungen: BasicLockable (seit C++11)
Von cppreference.com
< cpp | benannte req
Die BasicLockable-Anforderungen beschreiben die minimalen Eigenschaften von Typen, die exklusive Sperrsemantik für Ausführungsagenten (d.h. Threads) bereitstellen.
Inhalt |
[bearbeiten] Anforderungen
Damit der Typ L BasicLockable ist, müssen die folgenden Bedingungen für ein Objekt m vom Typ L erfüllt sein:
| Ausdruck | Vorbedingungen | Effekte |
|---|---|---|
| m.lock() | Blockiert, bis eine Sperre für den aktuellen Ausführungsagenten (Thread, Prozess, Task) erworben werden kann. Wenn eine Ausnahme ausgelöst wird, wird keine Sperre erworben. | |
| m.unlock() | Der aktuelle Ausführungsagent hält eine nicht geteilte Sperre auf m. |
Gibt die vom Ausführungsagenten gehaltene nicht geteilte Sperre frei. Löst keine Ausnahmen aus. |
[bearbeiten] Nicht geteilte Sperren
Eine Sperre auf einem Objekt wird als nicht geteilte Sperre bezeichnet, wenn sie durch einen Aufruf der Memberfunktion lock, try_lock, try_lock_for oder try_lock_until erworben wird.
[bearbeiten] Standardbibliothek
Die folgenden Standardbibliotheken-Typen erfüllen die BasicLockable-Anforderungen:
| (C++11) |
bietet grundlegende Gegenseitiger-Ausschluss-Funktionen (Klasse) |
| (C++11) |
bietet Gegenseitiger-Ausschluss-Funktionen, die von demselben Thread rekursiv gesperrt werden können (Klasse) |
| (C++11) |
bietet Gegenseitiger-Ausschluss-Funktionen, die rekursiv gesperrt werden können von demselben Thread und implementiert ein Sperren mit Timeout (Klasse) |
| (C++17) |
bietet gemeinsame Gegenseitiger-Ausschluss-Funktionen (Klasse) |
| (C++14) |
bietet gemeinsame Gegenseitiger-Ausschluss-Funktionen und implementiert ein Sperren mit Timeout (Klasse) |
| (C++11) |
bietet Gegenseitiger-Ausschluss-Funktionen, die ein Sperren mit Timeout implementieren (Klasse) |