Namespaces
Variants

std::stop_callback<Callback>:: ~stop_callback

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
~stop_callback ( ) ;
(自 C++20 起)

销毁 stop_callback 对象。

如果 * this 拥有带关联停止状态的 stop_token ,则从其注销回调函数。

如果回调函数正在另一个线程上并发调用,则析构函数要等到回调函数调用完成后才会完成。如果回调函数与析构函数在同一线程上被调用,则析构函数会直接返回而不会等待回调调用完成(参见注释)。

注释

stop_callback 析构函数的设计旨在防止竞态条件和死锁。若其他线程正在调用回调函数,则析构函数必须等待该调用完成后才能返回,否则函数对象可能在执行期间被销毁。回调函数无需具备可复制或可移动特性——即使在注册后,它仍存在于 stop_callback 对象内部。

另一方面,如果调用析构函数的当前线程与调用回调函数的线程相同,那么析构函数就不能等待,否则会发生死锁。同一个线程在调用回调函数的同时销毁 stop_callback 是可能且有效的,因为回调函数本身可能直接或间接地销毁该 stop_callback