名稱空間
變體
操作

std::stop_callback<Callback>::~stop_callback

來自 cppreference.com
 
 
併發支援庫
執行緒
(C++11)
(C++20)
this_thread 名稱空間
(C++11)
(C++11)
(C++11)
協同取消
互斥
(C++11)
通用鎖管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
條件變數
(C++11)
訊號量
門閂和屏障
(C++20)
(C++20)
期值
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(C++26)
危險指標
原子型別
(C++11)
(C++20)
原子型別的初始化
(C++11)(C++20 中已棄用)
(C++11)(C++20 中已棄用)
記憶體排序
(C++11)(C++26 中已棄用)
原子操作的自由函式
原子標誌的自由函式
 
std::stop_callback
成員函式
stop_callback::~stop_callback
推導指引
 
~stop_callback();
(C++20 起)

銷燬 stop_callback 物件。

*this 擁有一個帶有關聯停止狀態的 stop_token,則從該停止狀態中登出回撥。

如果回撥函式正在另一個執行緒上併發地被呼叫,解構函式直到回撥函式呼叫完成才會完成。如果回撥函式在呼叫解構函式的同一執行緒上被呼叫,則解構函式會返回而不等待回撥呼叫完成(見“注意”)。

[編輯] 注意

stop_callback 解構函式被設計用於防止競爭條件和死鎖。如果另一個執行緒當前正在呼叫回撥,那麼解構函式必須等到該呼叫完成才能返回,否則函式物件可能在被執行時被銷燬。回撥函式不要求是可複製或可移動的——即使在註冊後,它也存在於 stop_callback 物件自身之中。

另一方面,如果呼叫解構函式的當前執行緒與呼叫回撥的執行緒是同一個執行緒,那麼解構函式不能等待,否則會發生死鎖。同一個執行緒在呼叫其回撥函式時銷燬 stop_callback 是可能且有效的,因為回撥函式本身可能會直接或間接地銷燬 stop_callback