分享方式:


future 類別

描述「非同步傳回物件」

語法

template <class Ty>
class future;

備註

每個標準「非同步提供者」都會傳回一個類型是此範本之具現化的物件。 future物件提供它所關聯之異步提供者的唯一存取權。 如果您需要多個與相同異步提供者相關聯的異步傳回物件,請將 future 對象 shared_future 複製到物件。

成員

公用建構函式

名稱 描述
future 建構 future 物件。

公用方法

名稱 描述
get 擷取以相關的非同步狀態儲存的結果。
share 將物件轉換為 shared_future
valid 指定物件是否不是空的。
wait 封鎖目前的執行緒,直到「相關聯的非同步狀態」就緒為止。
wait_for 封鎖直到相關的非同步狀態變成就緒為止,或直到指定的時間已過為止。
wait_until 封鎖直到相關聯的非同步狀態就緒為止,或直到到了指定的時間點為止。

公用運算子

名稱 描述
future::operator= 從指定的 物件轉移「相關聯非同步狀態」。

需求

標頭: <future>

命名空間std

建構函式

建構 future 物件。

future() noexcept;
future(future&& Other) noexcept;

參數

Other
future 物件。

備註

第一個建構函式會建構沒有任何相關非同步狀態的 future 物件。

第二個future建構函式會建構 物件,並從 Other 傳輸相關聯的異步狀態其他 不再具有相關聯的異步狀態。

get

擷取以相關的非同步狀態儲存的結果。

Ty get();

傳回值

如果結果是例外狀況,此方法就會重新擲回該例外狀況。 否則會傳回結果。

備註

在擷取結果之前,此方法會封鎖目前的執行緒,直到相關聯的非同步狀態就緒為止。

就部分特製化 future<Ty&> 而言,預存值實際上是對傳遞給非同步提供者作為傳回值之物件的參考。

由於沒有特製化 future<void> 適用的任何預存值存在,因此這個方法會傳回 void

在其他特製化中,此方法會從預存值中移動其傳回值。 因此,請只呼叫此方法一次。

operator=

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

future& operator=(future&& Right) noexcept;

參數

Right
future 物件。

傳回值

*this

備註

傳輸之後, Right 不再具有相關聯的異步狀態。

share

將物件轉換成 shared_future 物件。

shared_future<Ty> share();

傳回值

shared_future(move(*this))

valid

指定物件是否具有「相關聯的非同步狀態」。

bool valid() noexcept;

傳回值

如果物件有關聯的非同步狀態,就是 true,否則為 false

wait

封鎖目前的執行緒,直到相關的非同步狀態變成「就緒」為止。

void wait() const;

備註

只有在非同步提供者儲存了傳回值或儲存了例外狀況之後,相關聯的非同步狀態才會「就緒」

wait_for

封鎖目前的執行緒,直到相關的非同步狀態變成「就緒」為止,或直到指定的時間間隔已過為止。

template <class Rep, class Period>
future_status wait_for(const chrono::duration<Rep, Period>& Rel_time) const;

參數

Rel_time
chrono::duration物件,指定線程封鎖的最大時間間隔。

傳回值

future_status,表示傳回的原因。

備註

只有在非同步提供者儲存了傳回值或儲存了例外狀況之後,相關聯的非同步狀態才會「就緒」。

wait_until

封鎖目前的執行緒,直到相關聯的非同步狀態「就緒」為止,或直到指定的時間點過後為止。

template <class Clock, class Duration>
future_status wait_until(const chrono::time_point<Clock, Duration>& Abs_time) const;

參數

Abs_time
time_point物件,指定線程可以解除封鎖的時間。

傳回值

future_status,表示傳回的原因。

備註

只有在非同步提供者儲存了傳回值或儲存了例外狀況之後,相關聯的非同步狀態才會「就緒」

另請參閱

標頭檔參考
<future>