共用方式為


promise 類別

描述「非同步提供者」

語法

template <class Ty>
class promise;

成員

公用建構函式

名稱 描述
承諾 建構 promise 物件。

公用方法

名稱 描述
get_future 傳回與這項承諾相關聯的 future
set_exception 以不可部分完成的方式設定這項承諾的結果以指出例外狀況。
set_exception_at_thread_exit 以不可部分完成的方式設定這項承諾的結果以指出例外狀況,而且只有在目前執行緒中所有執行緒區域物件已終結後 (通常是在執行緒結束) 傳遞通知。
set_value 以不可部分完成的方式設定這項承諾的結果以指出值。
set_value_at_thread_exit 以不可部分完成的方式設定這項承諾的結果以指出值,而且只有在目前執行緒中所有執行緒區域物件已終結後 (通常是在執行緒結束) 傳遞通知。
swap 交換這個承諾與指定之承諾物件的「相關聯非同步狀態」

公用運算子

名稱 描述
promise::operator= 這個承諾物件共用狀態的指派。

繼承階層架構

承諾

需求

標頭:<future>

命名空間:std

promise::get_future

傳回 future 物件,它具有和這個承諾相同的「相關聯非同步狀態」

future<Ty> get_future();

備註

如果承諾物件是空的,這個方法會擲回 error_codeno_statefuture_error

如果已經針對具有同一個相關聯的非同步狀態的承諾物件呼叫這個方法,方法會擲回 future_errorerror_codefuture_already_retrieved

promise::operator=

從指定的 promise 物件轉移「相關聯非同步狀態」

promise& operator=(promise&& Other) noexcept;

參數

其他
promise 物件。

傳回值

*this

備註

這個運算符會從 Other 傳輸相關聯的異步狀態。 傳輸之後,Other 是空

promise::promise 建構函式

建構 promise 物件。

promise();
template <class Alloc>
promise(allocator_arg_t, const Alloc& Al);
promise(promise&& Other) noexcept;

參數


記憶體配置器。 如需配置器的詳細資訊,請參閱配置器>。<

其他
promise 物件。

備註

第一個建構函式會建構空promise的物件。

第二個建構函式會建構空 promise 的物件,並使用 Al 進行記憶體配置。

第三個promise建構函式會建構 物件,並從 Other 傳輸相關聯的異步狀態,並將 Other 保留空白。

promise::set_exception

以不可部分完成的方式將例外狀況儲存為此 promise 物件的結果,並將「相關聯非同步狀態」設定為「就緒」

void set_exception(exception_ptr Exc);

參數

Exc
由這個方法儲存為例外狀況結果的 exception_ptr

備註

如果 promise 物件沒有相關聯非同步狀態,則這個方法會擲回含有 no_state 錯誤碼的 future_error

如果已經針對具有同一個相關聯非同步狀態的 promise 物件呼叫set_exceptionset_exception_at_thread_exitset_valueset_value_at_thread_exit,則這個方法會擲回含有 promise_already_satisfied 錯誤碼的 future_error

由於此方法的緣故,封鎖於相關聯非同步狀態上的任何執行緒會解除封鎖。

promise::set_exception_at_thread_exit

以不可部分完成方式設定這個 promise 的結果以指出例外狀況,而且只有在目前執行緒中所有執行緒區域物件已終結後 (通常是在執行緒結束) 傳遞通知。

void set_exception_at_thread_exit(exception_ptr Exc);

參數

Exc
由這個方法儲存為例外狀況結果的 exception_ptr

備註

如果 promise 物件沒有「相關聯非同步狀態」,則這個方法會擲回含有 no_state 錯誤碼的 future_error

如果已經針對具有同一個相關聯非同步狀態的 promise 物件呼叫 set_exceptionset_exception_at_thread_exitset_valueset_value_at_thread_exit,則這個方法會擲回含有 promise_already_satisfied 錯誤碼的 future_error

與set_exception相反,此方法不會將相關聯的異步狀態設定為就緒,直到目前線程中的所有線程區域物件都終結為止。 一般而言,在目前線程結束之前,在相關聯的異步狀態上封鎖的線程不會解除封鎖。

promise::set_value

以不可部分完成的方式將值儲存為此 promise 物件的結果,並將「相關聯非同步狀態」設定為「就緒」

void promise::set_value(const Ty& Val);
void promise::set_value(Ty&& Val);
void promise<Ty&>::set_value(Ty& Val);
void promise<void>::set_value();

參數

瓦爾
要儲存為結果的值。

備註

如果 promise 物件沒有相關聯非同步狀態,則這個方法會擲回含有 no_state 錯誤碼的 future_error

如果已經針對具有同一個相關聯非同步狀態的 promise 物件呼叫set_exceptionset_exception_at_thread_exitset_valueset_value_at_thread_exit,則這個方法會擲回含有 promise_already_satisfied 錯誤碼的 future_error

由於此方法的緣故,封鎖於相關聯非同步狀態上的任何執行緒會解除封鎖。

第一個方法也會擲回當 Val 複製到相關聯的異步狀態時所擲回的任何例外狀況。 在此情況下,相關聯的異步狀態未設定為就緒。

第二個方法也會擲回當 Val 移至相關聯異步狀態時所擲回的任何例外狀況。 在此情況下,相關聯的異步狀態未設定為就緒。

對於部分特製化promise<Ty&>,預存值實際上就是 Val參考。

對於特製化的 promise<void>,儲存值不存在。

promise::set_value_at_thread_exit

以不可部分完成的方式將值儲存為此 promise 物件的結果。

void promise::set_value_at_thread_exit(const Ty& Val);
void promise::set_value_at_thread_exit(Ty&& Val);
void promise<Ty&>::set_value_at_thread_exit(Ty& Val);
void promise<void>::set_value_at_thread_exit();

參數

瓦爾
要儲存為結果的值。

備註

如果 promise 物件沒有「相關聯非同步狀態」,則這個方法會擲回含有 no_state 錯誤碼的 future_error

如果已經針對具有同一個相關聯非同步狀態的 promise 物件呼叫 set_exceptionset_exception_at_thread_exitset_valueset_value_at_thread_exit,則這個方法會擲回含有 promise_already_satisfied 錯誤碼的 future_error

與相反 set_value地,在目前線程中的所有線程區域對象終結之前,相關聯的異步狀態不會設定為就緒。 一般而言,在目前線程結束之前,在相關聯的異步狀態上封鎖的線程不會解除封鎖。

第一個方法也會擲回當 Val 複製到相關聯的異步狀態時所擲回的任何例外狀況。

第二個方法也會擲回當 Val 移至相關聯異步狀態時所擲回的任何例外狀況。

針對部分特製化promise<Ty&>,預存值實際上是 Val參考。

對於特製化的 promise<void>,儲存值不存在。

promise::swap

交換這個承諾物件與指定之物件的「相關聯非同步狀態」

void swap(promise& Other) noexcept;

參數

其他
promise 物件。

另請參閱

標頭檔參考