concurrent_queue 類別

concurrent_queue 類別是一種序列容器類別,允許以先進先出的方式存取其項目。 它會啟用一組有限的並行安全作業,例如 pushtry_pop 等。 在這裡,並行安全表示指標或反覆運算器一律有效。 這不是元素初始化或特定周遊順序的保證。

語法

template<typename T, class _Ax>
class concurrent_queue: public ::Concurrency::details::_Concurrent_queue_base_v4;

參數

T
要儲存在佇列中的專案資料類型。

_斧頭
型別,表示預存配置器物件,這個物件會封裝此並行佇列之記憶體配置和解除配置的詳細資料。 這個引數是選擇性的,而且預設值是 allocator<T>

成員

公用 Typedefs

名稱 描述
allocator_type 型別,表示並行佇列的配置器類別。
const_iterator 型別,表示並行佇列中元素的非執行緒安全 const 反覆運算器。
const_reference 型別,提供儲存在並行佇列中之元素的參考 const ,以便讀取和執行 const 作業。
difference_type 類型,提供並行佇列中兩個專案之間的帶正負號距離。
iterator 型別,表示並行佇列中專案上的非執行緒安全反覆運算器。
reference 型別,提供儲存在並行佇列中之專案的參考。
size_type 計算並行佇列中專案數目的類型。
value_type 型別,表示儲存在並行佇列中的資料類型。

公用建構函式

名稱 描述
concurrent_queue 已多載。 建構並行佇列。
~concurrent_queue解構函式 終結並行佇列。

公用方法

名稱 描述
clear 清除並行佇列,終結任何目前排入佇列的專案。 這個方法不是並行安全的方法。
empty 測試在呼叫這個方法時,並行佇列是否為空的。 此方法是並行安全的方法。
get_allocator 傳回用來建構並行佇列的配置器複本。 此方法是並行安全的方法。
push 已多載。 將專案排入佇列並行佇列結尾處。 此方法是並行安全的方法。
try_pop 如果有專案可用,請從佇列中清除專案。 此方法是並行安全的方法。
unsafe_begin 已多載。 傳回 類型 iterator 為 或 const_iterator 的反覆運算器至並行佇列的開頭。 這個方法不是並行安全的方法。
unsafe_end 已多載。 傳回類型 iterator 為 或 const_iterator 的反覆運算器至並行佇列的結尾。 這個方法不是並行安全的方法。
unsafe_size 傳回佇列中的專案數。 這個方法不是並行安全的方法。

備註

如需詳細資訊,請參閱 平行容器和物件

繼承階層架構

concurrent_queue

需求

標頭: concurrent_queue.h

命名空間: concurrency

clear

清除並行佇列,終結任何目前排入佇列的專案。 這個方法不是並行安全的方法。

void clear();

concurrent_queue

建構並行佇列。

explicit concurrent_queue(
    const allocator_type& _Al = allocator_type());

concurrent_queue(
    const concurrent_queue& _OtherQ,
    const allocator_type& _Al = allocator_type());

concurrent_queue(
    concurrent_queue&& _OtherQ,
    const allocator_type& _Al = allocator_type());

template<typename _InputIterator>
concurrent_queue(_InputIterator _Begin,
    _InputIterator _End);

參數

_InputIterator
指定值範圍的輸入反覆運算器型別。

_鋁
搭配這個物件使用的配置器類別。

_OtherQ
要從中複製或移動項目的來源 concurrent_queue 物件。

_開始
項目範圍中要複製的第一個項目位置。

_結束
項目範圍之外要複製的第一個項目位置。

備註

所有建構函式都會儲存配置器物件 _Al ,並初始化佇列。

第一個建構函式會指定空的初始佇列,並明確指定要使用的配置器類型。

第二個建構函式會指定並行佇列 _OtherQ 的複本。

第三個建構函式會指定並行佇列 _OtherQ 的移動作業。

第四個建構函式會指定反覆運算器範圍 [ 、 _Begin_End 所提供的值。

~concurrent_queue

終結並行佇列。

~concurrent_queue();

empty

測試在呼叫這個方法時,並行佇列是否為空的。 此方法是並行安全的方法。

bool empty() const;

傳回值

true 如果同時佇列在我們查看的那一刻是空的,則為 , false 否則為 。

備註

雖然此方法在呼叫 方法 pushtry_popempty 時是並行安全,但呼叫執行緒檢查傳回的值可能不正確。

get_allocator

傳回用來建構並行佇列的配置器複本。 此方法是並行安全的方法。

allocator_type get_allocator() const;

傳回值

用來建構並行佇列的配置器複本。

push

將專案排入佇列並行佇列結尾處。 此方法是並行安全的方法。

void push(const T& _Src);

void push(T&& _Src);

參數

_Src
要加入至佇列的專案。

備註

push 對 方法 pushtry_popempty 的呼叫而言,是並行安全。

try_pop

如果有專案可用,請從佇列中清除專案。 此方法是並行安全的方法。

bool try_pop(T& _Dest);

參數

_Dest
要儲存已清除佇列專案之位置的參考。

傳回值

true 如果專案已成功清除佇列,則為 , false 否則為 。

備註

如果成功取消佇列專案,參數 _Dest 會接收已清除佇列的值、佇列中保留的原始值會終結,而且此函式會傳 true 回 。 如果沒有要清除佇列的專案,此函式會傳回 false 而不封鎖,且未定義 參數的內容 _Dest

try_pop 對 方法 pushtry_popempty 的呼叫而言,是並行安全。

unsafe_begin

傳回 類型 iterator 為 或 const_iterator 的反覆運算器至並行佇列的開頭。 這個方法不是並行安全的方法。

iterator unsafe_begin();

const_iterator unsafe_begin() const;

傳回值

類型 iterator 為 或 的反覆運算器,或 const_iterator 並行佇列物件的開頭。

備註

類別的 concurrent_queue 反覆運算器主要用於偵錯,因為它們很慢,而且反復專案對於其他佇列作業而言並非並行安全。

unsafe_end

傳回類型 iterator 為 或 const_iterator 的反覆運算器至並行佇列的結尾。 這個方法不是並行安全的方法。

iterator unsafe_end();

const_iterator unsafe_end() const;

傳回值

類型 iterator 為 或 const_iterator 到並行佇列結尾的反覆運算器。

備註

類別的 concurrent_queue 反覆運算器主要用於偵錯,因為它們很慢,而且反復專案對於其他佇列作業而言並非並行安全。

unsafe_size

傳回佇列中的專案數。 這個方法不是並行安全的方法。

size_type unsafe_size() const;

傳回值

並行佇列的大小。

備註

unsafe_size 不是並行安全,而且如果同時呼叫 方法 pushtry_popempty ,可能會產生不正確的結果。

另請參閱

concurrency 命名空間