concurrent_queue Sınıfı

concurrent_queue sınıfı, öğelerine ilk giriş, ilk çıkış erişimi sağlayan bir dizi kapsayıcı sınıfıdır. push ve try_pop gibi işlemler dahil, eşzamanlılık açısından sınırlı sayıda güvenli işlemi etkinleştirir. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatmanın veya belirli bir dolaşma sırasının garantisi değildir.

Sözdizimi

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

Parametreler

T
Kuyrukta depolanacak öğelerin veri türü.

_Ax
Bu eşzamanlı kuyruk için bellek ayırma ve serbest bırakma ayrıntılarını kapsayan depolanmış ayırıcı nesnesini temsil eden tür. Bu bağımsız değişken isteğe bağlıdır ve varsayılan değerdir allocator<T>.

Üyeler

Genel Tür Tanımları

Veri Akışı Adı Açıklama
allocator_type Eşzamanlı kuyruk için ayırıcı sınıfını temsil eden bir tür.
const_iterator Eşzamanlı kuyruktaki öğeler üzerinde iş parçacığı güvenli const olmayan bir yineleyiciyi temsil eden bir tür.
const_reference İşlemleri okumak ve gerçekleştirmek const için eşzamanlı kuyrukta depolanan bir const öğeye başvuru sağlayan tür.
difference_type Eşzamanlı bir kuyruktaki iki öğe arasındaki işaretli mesafeyi sunan bir tür.
iterator Eşzamanlı kuyruktaki öğeler üzerinde iş parçacığı güvenli olmayan bir yineleyiciyi temsil eden bir tür.
reference Eşzamanlı kuyrukta depolanan bir öğeye başvuru sağlayan bir tür.
size_type Eşzamanlı kuyruktaki öğe sayısını sayan bir tür.
value_type Eşzamanlı kuyrukta depolanan veri türünü temsil eden bir tür.

Ortak Oluşturucular

Veri Akışı Adı Açıklama
concurrent_queue Aşırı yüklü Eşzamanlı kuyruk oluşturur.
~concurrent_queue Yıkıcı işlev Eşzamanlı kuyruğu yok eder.

Genel Yöntemler

Veri Akışı Adı Açıklama
berrak Eşzamanlı kuyruğu temizleyerek şu anda sıralanan öğeleri yok eder. Bu yöntem eşzamanlılık açısından güvenli değildir.
empty Bu yöntem çağrıldığında eşzamanlı kuyruğun boş olup olmadığını test eder. Bu yöntem eşzamanlılık açısından güvenlidir.
get_allocator Eşzamanlı kuyruğu oluşturmak için kullanılan ayırıcının bir kopyasını döndürür. Bu yöntem eşzamanlılık açısından güvenlidir.
push Aşırı yüklü Eşzamanlı kuyruğun sonuna bir öğe ekler. Bu yöntem eşzamanlılık açısından güvenlidir.
try_pop Varsa kuyruktan bir öğeyi çıkarır. Bu yöntem eşzamanlılık açısından güvenlidir.
unsafe_begin Aşırı yüklü iterator veya const_iterator türünde bir yineleyici döndürerek eşzamanlı kuyruğun başına gider. Bu yöntem eşzamanlılık açısından güvenli değildir.
güvensiz_bitiş Aşırı yüklü Eş zamanlı kuyruğun sonuna, iterator veya const_iterator türünde bir yineleyici döndürür. Bu yöntem eşzamanlılık açısından güvenli değildir.
unsafe_size Kuyruktaki öğe sayısını döndürür. Bu yöntem eşzamanlılık açısından güvenli değildir.

Açıklamalar

Daha fazla bilgi için bkz . Paralel Kapsayıcılar ve Nesneler.

Devralma Hiyerarşisi

concurrent_queue

Gereksinimler

Üst bilgi: concurrent_queue.h

Ad alanı: eşzamanlılık

berrak

Eşzamanlı kuyruğu temizleyerek şu anda sıralanan öğeleri yok eder. Bu yöntem eşzamanlılık açısından güvenli değildir.

void clear();

concurrent_queue

Eşzamanlı kuyruk oluşturur.

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);

Parametreler

_InputIterator
Bir değer aralığını belirten giriş yineleyicisinin türü.

_Al
Kullanılacak bu nesneyle bağlantılı tahsis edici sınıf.

_OtherQ
Öğeleri kopyalamak veya taşımak için kullanılan kaynak concurrent_queue nesne.

_Başla
Kopyalanacak öğe aralığındaki ilk öğenin konumu.

_Son
Kopyalanacak öğe aralığının ötesindeki ilk öğenin konumu.

Açıklamalar

Tüm oluşturucular bir ayırıcı nesnesi _Al depolar ve kuyruğu başlatır.

İlk oluşturucu boş bir başlangıç kuyruğu belirtir ve kullanılacak ayırıcı türünü açıkça belirtir.

İkinci oluşturucu eşzamanlı kuyruğun _OtherQbir kopyasını belirtir.

Üçüncü oluşturucu eşzamanlı kuyruğunun _OtherQtaşınmasını belirtir.

Dördüncü oluşturucu[ _Begin, _End) yineleyici aralığı tarafından sağlanan değerleri belirtir.

~concurrent_queue

Eşzamanlı kuyruğu yok eder.

~concurrent_queue();

empty

Bu yöntem çağrıldığında eşzamanlı kuyruğun boş olup olmadığını test eder. Bu yöntem eşzamanlılık açısından güvenlidir.

bool empty() const;

Dönüş Değeri

true eş zamanlı kuyruk baktığımız anda boşsa, false aksi takdirde.

Açıklamalar

Bu yöntem, push, try_pop, ve empty yöntemlerine yapılan çağrılar açısından eşzamanlılık açısından güvenli olsa da, döndürülen değer çağıran iş parçacığı tarafından incelendiğinde yanlış olabilir.

get_allocator

Eşzamanlı kuyruğu oluşturmak için kullanılan ayırıcının bir kopyasını döndürür. Bu yöntem eşzamanlılık açısından güvenlidir.

allocator_type get_allocator() const;

Dönüş Değeri

Eşzamanlı kuyruğu oluşturmak için kullanılan ayırıcının bir kopyası.

'itmek' or 'gönderme'

Eşzamanlı kuyruğun sonuna bir öğe ekler. Bu yöntem eşzamanlılık açısından güvenlidir.

void push(const T& _Src);

void push(T&& _Src);

Parametreler

_Src
Kuyruğa eklenecek öğe.

Açıklamalar

push, pushve try_popyöntemlerine yapılan çağrılarla emptyeşzamanlılık açısından güvenlidir.

try_pop

Varsa kuyruktan bir öğeyi çıkarır. Bu yöntem eşzamanlılık açısından güvenlidir.

bool try_pop(T& _Dest);

Parametreler

_Dest
Kuyruktan çıkarılmış öğeyi depolamak için bir konuma referans.

Dönüş Değeri

true bir öğe başarıyla sıralandıysa, false aksi takdirde.

Açıklamalar

Bir öğe başarıyla kuyruktan çıkarılırsa, _Dest parametresi çıkarılan değeri alır, kuyrukta tutulan özgün değer yok edilir ve bu işlev true değerini döndürür. Kuyruktan çıkarılacak bir öğe yoksa, bu işlev engelleme olmadan false döndürür ve _Dest parametresinin içeriği tanımsız olur.

try_pop, pushve try_popyöntemlerine yapılan çağrılarla emptyeşzamanlılık açısından güvenlidir.

güvensiz_başlat

iterator veya const_iterator türünde bir yineleyici döndürerek eşzamanlı kuyruğun başına gider. Bu yöntem eşzamanlılık açısından güvenli değildir.

iterator unsafe_begin();

const_iterator unsafe_begin() const;

Dönüş Değeri

Eşzamanlı kuyruk nesnesinin başına işaret eden iterator veya const_iterator türünde bir yineleyici.

Açıklamalar

Sınıfın concurrent_queue yineleyicileri, yavaş olduklarından ve yineleme diğer kuyruk işlemlerine göre eşzamanlılık açısından güvenli olmadığından öncelikle hata ayıklamaya yöneliktir.

güvensiz_sonu

Eş zamanlı kuyruğun sonuna, iterator veya const_iterator türünde bir yineleyici döndürür. Bu yöntem eşzamanlılık açısından güvenli değildir.

iterator unsafe_end();

const_iterator unsafe_end() const;

Dönüş Değeri

Türü iterator veya const_iterator olan, eş zamanlı kuyruğun sonuna kadar giden bir yineleyici.

Açıklamalar

Sınıfın concurrent_queue yineleyicileri, yavaş olduklarından ve yineleme diğer kuyruk işlemlerine göre eşzamanlılık açısından güvenli olmadığından öncelikle hata ayıklamaya yöneliktir.

güvensiz_boyut

Kuyruktaki öğe sayısını döndürür. Bu yöntem eşzamanlılık açısından güvenli değildir.

size_type unsafe_size() const;

Dönüş Değeri

Eşzamanlı kuyruğun boyutu.

Açıklamalar

unsafe_sizeeşzamanlılık açısından güvenli değildir ve , pushve try_popyöntemlerine emptyyapılan çağrılarla eşzamanlı olarak çağrılırsa yanlış sonuçlar üretebilir.

Ayrıca bkz.

Eşzamanlılık Ad Alanı