Aracılığıyla paylaş


<condition_variable>

Sınıflar tanımlar condition_variable ve condition_variable_any bir koşul doğru olmasını bekleyin nesneleri oluşturmak için kullanılır.

Bu üstbilgi eşzamanlılık çalışma zamanı (ConcRT) kullanır, böylece diğer ConcRT mekanizmaları ile birlikte kullanabilirsiniz. ConcRT hakkında daha fazla bilgi için bkz: Eşzamanlılık çalışma zamanı.

#include <condition_variable>

Not

Kullanarak derlenmiş kodda /clr veya /clr:pure, bu başlığı engellenir.

Hh874761.collapse_all(tr-tr,VS.110).gifNotlar

Bir koşul değişken de kullanmanız gerekir için bekler kodu bir mutex. Bir çağrıyla kilitlemelidir mutex koşulu değişken için bekleyin işlevlerini çağırmadan önce. mutex Çağrılan işlev verir sonra kilitlenir. mutex İş parçacığı koşul doğru olmasını beklerken kilitli değil. Var olan hiçbir tahmin edilemeyen sonuçlar, her iş parçacığı için bir koşul değişken beklediği aynı kullanmanız gerekir mutex nesne.

Nesne türü condition_variable_any herhangi bir türde bir mutex ile kullanılabilir. Sağlamak kullanılan zaman uyumu sağlayıcısı türü yok try_lock yöntem. Nesne türü condition_variable türü bir mutex ile yalnızca kullanılabilir unique_lock<mutex>. Nesne türü nesne türü hızlı condition_variable_any<unique_lock<mutex>>.

Bir olay için beklemeye devam ilk mutex kilitlemek ve birini çağırın wait koşulu değişken yöntemleri. wait Çağrısı blokları kadar başka bir iş parçacığı durumu değişken bildirir.

Sahte wakeups koşul değişkenleri olmadan engellenmemiş hale için bekleyen iş parçacığı uygun bildirimleri oluşur. Bekleme işlevinden kodunu döndürdüğünde alacaklardır böyle wakeups tanımak için bir koşul doğru olmasını bekler kod açıkça o koşulun denetlemeniz gerekir. Bu genellikle bir döngü kullanarak yapılır; kullanabileceğiniz wait(unique_lock<mutex>& lock, Predicate pred) sizin için bu döngü gerçekleştirmek için.

while (condition is false)
    wait for condition variable;

condition_variable_any Ve condition_variable sınıflarının her koşul için bekleyin üç yöntem vardır.

  • waitsınırsız bir süre bekler.

  • wait_untilBelirtilen kadar bekler time.

  • wait_forBelirtilen bir bekler time interval.

Bu yöntemlerin her biri iki aşırı yüklü sürümlerini içerir. Biri sadece bekler ve spuriously uyandırmak. Diğer bir karşılaştırma tanımlayan ek Şablon bağımsız değişken alır. Karşılaştırma kadar yöntemi döndürmez true.

Her sınıfı da kendi koşulu koşul değişken bildirmek için kullanılan iki yöntem vardır true.

  • notify_oneKoşul değişken için bekleyen iş parçacığı birini uyku modundan çıkar.

  • notify_allTüm koşul değişken için bekleyen iş parçacıklarının yukarı uyku modundan çıkar.

Ayrıca bkz.

Başvuru

condition_variable sınıfı

condition_variable_any sınıfı

cv_status numaralandırma

Diğer Kaynaklar

Üstbilgi dosyaları