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