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
,表示傳回的原因。
備註
只有在非同步提供者儲存了傳回值或儲存了例外狀況之後,相關聯的非同步狀態才會「就緒」。