Namespaces
Variants

std::stop_source:: request_stop

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
(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
bool request_stop ( ) noexcept ;
(seit C++20)

Stellt eine Stopp-Anforderung an den Stop-Zustand, falls das stop_source Objekt einen Stop-Zustand besitzt und noch keine Stopp-Anforderung gestellt wurde.

Die Entscheidung wird atomar getroffen, und falls ein Stopp angefordert wurde, wird der Stopp-Zustand atomar aktualisiert, um Race Conditions zu vermeiden, sodass:

  • stop_requested ( ) und stop_possible ( ) können gleichzeitig auf anderen stop_token s und stop_source s desselben Stop-Zustands aufgerufen werden;
  • request_stop ( ) kann gleichzeitig auf anderen stop_source -Objekten aufgerufen werden, wobei nur eines tatsächlich die Stop-Anforderung durchführt.

Siehe jedoch den Abschnitt Hinweise.

Inhaltsverzeichnis

Parameter

(keine)

Rückgabewert

true wenn das stop_source -Objekt einen Stop-Zustand hat und dieser Aufruf eine Stop-Anfrage ausgelöst hat, andernfalls false .

Nachbedingungen

stop_possible ( ) ist false oder stop_requested ( ) ist true .

Hinweise

Falls die request_stop ( ) tatsächlich eine Stoppanforderung ausgibt (d.h. true zurückgibt), dann werden alle für denselben assoziierten Stoppzustand registrierten stop_callback s synchron auf demselben Thread aufgerufen, auf dem request_stop ( ) ausgeführt wurde. Wenn ein Aufruf eines Callbacks durch eine Exception beendet wird, wird std::terminate aufgerufen.

Wenn das stop_source -Objekt einen Stop-Zustand besitzt, aber bereits eine Stop-Anforderung gestellt wurde, gibt diese Funktion false zurück. Es besteht jedoch keine Garantie, dass ein anderes stop_source -Objekt, das gerade (erfolgreich) einen Stop angefordert hat, sich nicht noch in der Mitte des Aufrufs einer stop_callback -Funktion befindet.

Wenn die request_stop ( ) tatsächlich eine Stoppanforderung ausgibt (d.h. true zurückgibt), dann werden alle Bedingungsvariablen des Basistyps std::condition_variable_any , die mit einem unterbrechbaren Wait für stop_token s registriert sind, die dem Stop-Zustand der stop_source zugeordnet sind, benachrichtigt.

Beispiel