std::stop_callback<Callback>:: ~stop_callback
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
|
stop_callback::~stop_callback
|
||||
| Deduction guides |
|
~stop_callback
(
)
;
|
(seit C++20) | |
Zerstört das
stop_callback
Objekt.
Wenn
*
this
einen
stop_token
mit assoziiertem Stop-Zustand besitzt, wird der Callback davon abgemeldet.
Wenn die Callback-Funktion gleichzeitig in einem anderen Thread aufgerufen wird, schließt der Destruktor erst ab, nachdem der Aufruf der Callback-Funktion abgeschlossen ist. Wenn die Callback-Funktion im selben Thread aufgerufen wird, in dem der Destruktor aufgerufen wird, kehrt der Destruktor zurück, ohne auf den Abschluss des Callback-Aufrufs zu warten (siehe Hinweise).
Hinweise
Der
stop_callback
-Destruktor ist darauf ausgelegt, Race Conditions und Deadlocks zu verhindern. Wenn ein anderer Thread gerade den Callback aufruft, kann der Destruktor erst zurückkehren, nachdem dieser abgeschlossen ist, da sonst das Funktionsobjekt möglicherweise zerstört wird, während es ausgeführt wird. Der Callback muss weder kopierbar noch verschiebbar sein – er verbleibt im
stop_callback
-Objekt selbst, auch nach der Registrierung.
Andererseits, wenn der aktuelle Thread, der den Destruktor aufruft, derselbe Thread ist, der den Callback aufruft, dann kann der Destruktor nicht warten, da sonst ein Deadlock auftreten würde. Es ist möglich und gültig, dass derselbe Thread den
stop_callback
zerstört, während er seine Callback-Funktion aufruft, weil die Callback-Funktion selbst den
stop_callback
direkt oder indirekt zerstören könnte.