public member function
<future>

std::packaged_task::make_ready_at_thread_exit

void make_ready_at_thread_exit (args... args);
呼叫儲存的任務,線上程退出時使其就緒
呼叫儲存的任務,將 args 作為引數轉發,就像呼叫其 operator() 成員一樣,但不同於呼叫完成後立即使共享狀態就緒,而是使共享狀態線上程退出時就緒。

如果一個與同一共享狀態關聯的 future 物件正在等待 future::get 的呼叫,它將保持阻塞直到執行緒結束。一旦執行緒結束,對 future::get 的呼叫將解除阻塞並返回或丟擲異常。

請注意,呼叫此函式已設定共享狀態中的值,任何在此呼叫和執行緒結束之間嘗試修改此值的呼叫都將丟擲 future_error,並將 promise_already_satisfied 作為錯誤條件

引數

args...
呼叫的引數。
Args...packaged_task 的模板引數,它們代表儲存的任務的引數型別。

返回值

無。

資料競爭

*packaged_task*已被修改。
共享狀態被修改為原子操作(不引起資料競爭),同步線上程結束時發生。

異常安全

基本保證:如果丟擲異常,*packaged_task*處於有效狀態。

此成員函式在以下條件下丟擲異常
exception typeerror condition描述
future_errorfuture_errc::no_state該物件沒有*共享狀態*(它是*預設構造*的*packaged_task*)。
future_errorfuture_errc::promise_already_satisfied儲存的任務已被呼叫
此成員函式還會在引數的任何複製或移動操作丟擲異常時丟擲,並且(取決於庫實現)也可能丟擲以報告其他情況。

另見