分享方式:


shared_future 類別

描述「非同步傳回物件」。 相對於 future 物件,「非同步提供者」可以與任意數目的 shared_future 物件相關聯。

語法

template <class Ty>
class shared_future;

備註

請勿在空的 物件shared_future呼叫、 operator=和 解構函式以外的valid任何方法。

shared_future 物件不會同步處理。 在來自多個執行緒的相同物件上呼叫方法會導致資料競爭的情形,因而產生無法預期的結果。

成員

公用建構函式

名稱 描述
shared_future 建構 shared_future 物件。

公用方法

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

公用運算子

名稱 描述
shared_future::operator= 指派新的相關聯非同步狀態。

需求

標頭:<future>

命名空間:std

shared_future::get

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

const Ty& get() const;

Ty& get() const;

void get() const;

備註

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

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

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

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

shared_future::operator=

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

shared_future& operator=(shared_future&& Right) noexcept;
shared_future& operator=(const shared_future& Right);

參數

Right
shared_future 物件。

傳回值

*this

備註

對於第一個運算符, Right 在作業之後不再具有相關聯的異步狀態。

針對第二個方法, Right 會維護其相關聯的異步狀態。

shared_future::shared_future 建構函式

建構 shared_future 物件。

shared_future() noexcept;
shared_future(future<Ty>&& Right) noexcept;
shared_future(shared_future&& Right) noexcept;
shared_future(const shared_future& Right);

參數

Right
futureshared_future 物件。

備註

第一個建構函式會建構不具有「相關聯非同步狀態」shared_future 物件。

第二個和第三個shared_future建構函式會建構 物件,並從 Right 傳輸相關聯的異步狀態右側 不再具有相關聯的異步狀態。

第四個shared_future建構函式會建構與 Right 具有相同相關聯異步狀態的物件。

shared_future::valid

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

bool valid() noexcept;

傳回值

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

shared_future::wait

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

void wait() const;

備註

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

shared_future::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,會指出傳回的原因。

備註

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

shared_future::wait_until

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

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

參數

Abs_time
chrono::time_point 物件,會指定可將執行緒解除封鎖的時間。

傳回值

future_status,會指出傳回的原因。

備註

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

另請參閱

標頭檔參考
<future>