Namespaces
Variants

C++ named requirements: SharedTimedMutex (since C++14)

From cppreference.net
C++ named requirements

Die SharedTimedMutex -Anforderungen erweitern die TimedMutex -Anforderungen um den gemeinsamen Sperrmodus (shared lock ownership mode).

Anforderungen

Zusätzlich unterstützt ein Objekt m vom Typ SharedTimedMutex zeitgesteuerte Shared-Operationen:

  • Der Ausdruck m. try_lock_shared_for ( duration ) besitzt die folgenden Eigenschaften
  • Verhält sich wie eine atomare Operation.
  • Versucht, den gemeinsamen Besitz des Mutex innerhalb der durch duration angegebenen Dauer zu erlangen. Wenn duration kleiner oder gleich duration.zero() ist, wird versucht, den Besitz ohne Wartezeit zu erlangen (wie bei try_lock() ). Andernfalls blockiert diese Funktion, bis der Mutex erworben wird oder die durch duration angegebene Zeit verstrichen ist. Sie kehrt innerhalb von duration nur zurück, wenn sie erfolgreich ist, aber es ist möglich, dass der Mutex nicht erworben wird, selbst wenn er zu einem Zeitpunkt während duration nicht von einem anderen Thread gehalten wurde. In jedem Fall gibt sie true zurück, wenn der Mutex erworben wurde, und false andernfalls.
  • Wenn try_lock_shared_for(duration) erfolgreich ist, synchronisieren vorherige unlock() -Operationen auf demselben Objekt mit dieser Operation (äquivalent zu Release-Acquire std::memory_order ).
  • Das Verhalten ist undefiniert, wenn der aufrufende Thread den Mutex bereits in einem Modus besitzt.
  • Während der Ausführung können Ausnahmen von Uhr, Zeitpunkt oder Dauer ausgelöst werden (von der Standardbibliothek bereitgestellte Uhren, Zeitpunkte und Dauern werfen niemals Ausnahmen).
  • Wenn eine Ausnahme ausgelöst wird, wird die gemeinsame Sperre nicht erworben.
  • Der Ausdruck m. try_lock_shared_until ( time_point ) hat folgende Eigenschaften
  • Verhält sich wie ein atomarer Vorgang.
  • Versucht, innerhalb der verbleibenden Zeit bis zum time_point gemeinsamen Besitz des Mutex zu erlangen. Falls der time_point bereits überschritten wurde, wird versucht, den Besitz ohne Sperren zu erlangen (wie durch try_lock() ). Andernfalls blockiert diese Funktion, bis der Mutex erworben wurde oder der durch time_point spezifizierte Zeitpunkt verstrichen ist. Sie kehrt nur vor dem time_point zurück, wenn sie erfolgreich war, aber es ist ihr erlaubt, den Mutex nicht zu erwerben, selbst wenn er zu einem Zeitpunkt vor dem time_point nicht durch einen anderen Thread besessen war. In jedem Fall gibt sie true zurück, wenn der Mutex erworben wurde, und false andernfalls.
  • Wenn try_lock_shared_until(time_point) erfolgreich ist, synchronisieren vorherige unlock() -Operationen auf demselben Objekt mit dieser Operation (äquivalent zu Release-Acquire- std::memory_order ).
  • Das Verhalten ist undefiniert, wenn der aufrufende Thread den Mutex bereits in irgendeinem Modus besitzt.
  • Während der Ausführung können Ausnahmen durch Uhr, Zeitpunkt oder Dauer ausgelöst werden (von der Standardbibliothek bereitgestellte Uhren, Zeitpunkte und Dauern werfen niemals Ausnahmen).
  • Wenn eine Ausnahme ausgelöst wird, wird die gemeinsame Sperre nicht erworben.

Standardbibliothek

Die folgenden Standardbibliothekstypen erfüllen die SharedTimedMutex -Anforderungen:

bietet gemeinsame gegenseitige Ausschlussfunktionalität und implementiert Sperren mit Timeout
(Klasse)

Siehe auch