std::stop_callback<Callback>::~stop_callback
來自 cppreference.com
< cpp | thread | stop callback
~stop_callback(); |
(C++20 起) | |
銷燬 stop_callback
物件。
若 *this 擁有一個帶有關聯停止狀態的 stop_token
,則從該停止狀態中登出回撥。
如果回撥函式正在另一個執行緒上併發地被呼叫,解構函式直到回撥函式呼叫完成才會完成。如果回撥函式在呼叫解構函式的同一執行緒上被呼叫,則解構函式會返回而不等待回撥呼叫完成(見“注意”)。
[編輯] 注意
stop_callback
解構函式被設計用於防止競爭條件和死鎖。如果另一個執行緒當前正在呼叫回撥,那麼解構函式必須等到該呼叫完成才能返回,否則函式物件可能在被執行時被銷燬。回撥函式不要求是可複製或可移動的——即使在註冊後,它也存在於 stop_callback
物件自身之中。
另一方面,如果呼叫解構函式的當前執行緒與呼叫回撥的執行緒是同一個執行緒,那麼解構函式不能等待,否則會發生死鎖。同一個執行緒在呼叫其回撥函式時銷燬 stop_callback
是可能且有效的,因為回撥函式本身可能會直接或間接地銷燬 stop_callback
。