public member function
<future>

std::promise::set_value_at_thread_exit

generic template (1)
void set_value_at_thread_exit (const T& val);void set_value_at_thread_exit (T&& val);
specializations (2)
void promise<R&>::set_value_at_thread_exit (R& val);     // when T is a reference type (R&)void promise<void>::set_value_at_thread_exit (void);     // when T is void
線上程退出時設定值
val 儲存為共享狀態的值,但不會立即使其變為就緒。相反,它將線上程退出時自動變為就緒,一旦所有具有執行緒儲存期的物件都被銷燬。

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

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

引數

val
共享狀態的值。

返回值



資料競爭

promise 物件被修改。
共享狀態被修改為原子操作(不會導致資料競爭),同步線上程結束時發生。

異常安全

基本保證:如果丟擲異常,則 promise 物件處於有效狀態。

此成員函式在以下條件下丟擲異常
exception typeerror condition描述
future_errorfuture_errc::no_state該物件沒有共享狀態(它已被移動賦值
future_errorfuture_errc::promise_already_satisfied共享狀態已儲存值或異常
此成員函式還會丟擲,如果用於複製/移動 val 的建構函式丟擲(針對(1)),並且-取決於庫的實現-也可能丟擲以報告其他情況。

另見