std::stop_source::request_stop
來自 cppreference.com
< cpp | thread | stop source
bool request_stop() noexcept; |
(C++20 起) | |
向停止狀態(stop-state)發出停止請求,前提是 stop_source
物件擁有一個停止狀態,且該狀態尚未被請求停止。
這個決定是原子地做出的,如果請求了停止,停止狀態會原子地更新以避免競爭條件,這樣一來:
- stop_requested() 和 stop_possible() 可以被其他共享同一停止狀態的
stop_token
和stop_source
併發地呼叫; - request_stop() 可以被其他
stop_source
物件併發地呼叫,而只有一個會實際執行停止請求。
不過,請參閱“注意”一節。
目錄 |
[編輯] 引數
(無)
[編輯] 返回值
如果 stop_source
物件擁有一個停止狀態且本次呼叫發出了停止請求,則返回 true,否則返回 false。
[編輯] 後置條件
stop_possible() 為 false 或 stop_requested() 為 true。
[編輯] 注意
如果 request_stop() 確實發出了停止請求(即返回 true),那麼所有為同一關聯停止狀態註冊的 stop_callback
將會在呼叫 request_stop() 的同一執行緒上同步地被呼叫。如果某個回撥的呼叫因異常而退出,將會呼叫 std::terminate。
如果 stop_source
物件擁有一個停止狀態但已經發出了停止請求,那麼此函式返回 false。但是,不能保證另一個剛剛(成功)請求停止的 stop_source
物件沒有正在呼叫某個 stop_callback
函式的過程中。
如果 request_stop() 確實發出了停止請求(即返回 true),那麼所有與此 stop_source
的停止狀態相關聯的 stop_token
一起註冊了可中斷等待的、基型別為 std::condition_variable_any 的條件變數都將被通知。
[編輯] 示例
本節不完整 原因:無示例 |