std::stop_callback<Callback>:: ~stop_callback
From cppreference.net
<
cpp
|
thread
|
stop callback
C++
Concurrency support library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::stop_callback
| Member functions | ||||
|
stop_callback::~stop_callback
|
||||
| Deduction guides |
|
~stop_callback
(
)
;
|
(自 C++20 起) | |
销毁
stop_callback
对象。
如果
*
this
拥有带关联停止状态的
stop_token
,则从其注销回调函数。
如果回调函数正在另一个线程上并发调用,则析构函数要等到回调函数调用完成后才会完成。如果回调函数与析构函数在同一线程上被调用,则析构函数会直接返回而不会等待回调调用完成(参见注释)。
注释
stop_callback
析构函数的设计旨在防止竞态条件和死锁。若其他线程正在调用回调函数,则析构函数必须等待该调用完成后才能返回,否则函数对象可能在执行期间被销毁。回调函数无需具备可复制或可移动特性——即使在注册后,它仍存在于
stop_callback
对象内部。
另一方面,如果调用析构函数的当前线程与调用回调函数的线程相同,那么析构函数就不能等待,否则会发生死锁。同一个线程在调用回调函数的同时销毁
stop_callback
是可能且有效的,因为回调函数本身可能直接或间接地销毁该
stop_callback
。