Eşitleme veri yapıları
Birden çok iş parçacığı için paylaşılan veri erişimini eşitlemek olanak sağlayan birkaç veri yapılarını eşzamanlılık çalışma zamanı sağlar. Seyrek değiştirmek veri paylaştırdığınız zaman, bu veri yapıları yararlıdır. Örneğin, önemli bir bölümü, bir eşitleme nesnesi paylaştırılmış kaynağın kullanılabilir duruma gelene kadar beklemek, diğer iş neden olur. Bu nedenle, sık kullanılan veri erişimi eşitlemek için böyle bir nesne kullanırsanız, uygulamanızda ölçeklenebilirlik kaybedebilirsiniz. Paralel Desenler kitaplığının (ppl) Sağlayan concurrency::combinable birden çok iş parçacığı veya görevleri eşitleme gerek kalmadan arasında kaynak paylaşımı sağlayan sınıf. combinable sınıfı hakkında daha fazla bilgi için, bkz. Paralel kapsayıcıları ve nesneleri.
Bölümler
Bu konuda, aşağıdaki zaman uyumsuz ileti bloğu türleri ayrıntılı açıklanmaktadır:
critical_section
reader_writer_lock
scoped_lock ve scoped_lock_read
Olay
critical_section
Concurrency::critical_section onları preempting yerine başka görevler veren işbirliği yapan Karşılıklı dışlama nesne sınıfı gösterir. Kritik bölüm birden çok iş parçacığı özel okuma ve yazma erişimi için paylaşılan veri gerektiğinde kullanışlıdır.
critical_section Yeniden kullanılabilirlikleri olmayan bir sınıftır. Concurrency::critical_section::lock yöntemi bir özel durum türü atar concurrency::improper_lock zaten kilit sahibi olan iş parçacığı tarafından çağrılırsa.
Yöntemleri ve özellikleri
Aşağıdaki tabloda tanımlanır önemli yöntemleri gösterilmektedir critical_section sınıfı.
Method |
Description |
---|---|
Kritik bölüm kapsar. Kilit edinme kadar arama içerik blokları. |
|
Kritik bölüm almaya çalışır, ancak engelleyecek. |
|
Kritik bölüm yayımlar. |
Top
reader_writer_lock
Concurrency::reader_writer_lock sınıfı, iş parçacığı güvenli okuma/yazma işlemleri için paylaşılan veri sağlar. Çoklu iş parçacıklarını eşzamanlı okuma paylaşılan kaynağa erişmesi ama nadiren bu paylaştırılmış kaynağa yazma Okuyucu/Yazıcı kilit kullanın. Bu sınıf yalnızca bir iş parçacığının yazma nesneye herhangi bir anda erişmenizi sağlar.
reader_writer_lock Sınıfı gerçekleştirebilir daha iyi critical_section çünkü sınıf bir critical_section nesne eşzamanlı okuma erişimi engelleyen bir paylaşılan kaynağa erişim sağlayamadığından isteklerdir.
Gibi critical_section sınıfı reader_writer_lock onları preempting yerine başka görevler veren işbirliği yapan Karşılıklı dışlama nesne sınıfı gösterir.
Paylaşılan kaynağa yazmalısınız bir iş parçacığı bir okuyucu/yazıcı kilit ettiğinde de kaynağa erişmesi gereken diğer iş yazan kilidi serbest bırakıncaya engellenir. reader_writer_lock Sınıfının örneği olan bir yazma tercih önce bekliyor okuyucular engelini kaldırır, bekleyen yazarlar engelini kaldırır LOCK kilitle.
Gibi critical_section sınıfı reader_writer_lock yeniden kullanılabilirlikleri olmayan bir sınıftır. Concurrency::reader_writer_lock::lock ve concurrency::reader_writer_lock::lock_read yöntemi bir özel durum türü throw improper_lock , zaten kilit sahibi bir iş parçacığı tarafından verilir.
Not
Çünkü reader_writer_lock sınıfı yeniden kullanılabilirlikleri olmayan, salt okunur bir kilit bir okuyucu/yazıcı kilit yükseltme ya da salt okunur bir Kilitle Okuyucu/Yazıcı kilit sunulmuyor.Bu işlemlerden birini gerçekleştirerek, belirsiz davranış üretir.
Yöntemleri ve özellikleri
Aşağıdaki tabloda tanımlanır önemli yöntemleri gösterilmektedir reader_writer_lock sınıfı.
Method |
Description |
---|---|
Kilit okuma/yazma erişimi kapsar. |
|
Okuma/yazma erişimi kilidi almaya çalışır, ancak engelleyecek. |
|
Kilit salt okunur erişimi kapsar. |
|
Salt okunur erişim kilidi almaya çalışır, ancak engelleyecek. |
|
Kilidi kaldırır. |
Top
scoped_lock ve scoped_lock_read
critical_section Ve reader_writer_lock Karşılıklı dışlama nesneleri ile çalışma şeklinizi basitleştirmek iç içe yardımcı sınıflar sınıfları sağlar. Bu yardımcı sınıf olarak bilinen kilitleri kapsamlı.
critical_section Sınıf içeren concurrency::critical_section::scoped_lock sınıfı. Erişim sağlanan kurucu edinme critical_section nesne; Bu nesneye erişimi yıkıcı yayımlar. reader_writer_lock Sınıf içeren concurrency::reader_writer_lock::scoped_lock benzer sınıfı critical_section::scoped_lock, sağlanan yazma erişimini yöneten dışında reader_writer_lock nesnesi. reader_writer_lock Sınıfı da içeren concurrency::reader_writer_lock::scoped_lock_read sınıfı. Bu sınıf sağlanan okuma erişimi yöneten reader_writer_lock nesnesi.
Kapsamlı kilitleri ile çalışırken birçok avantaj sağlayan critical_section ve reader_writer_lock el ile nesneleri. Tipik olarak, yığın üzerinde kapsamlı bir kilit ayırır. Kapsamlı bir kilit yok edilir, karşılıklı dışlama nesne erişimi otomatik olarak yayımlar; Bu nedenle, el ile alttaki nesne kilidini değildir. Birden fazla fonksiyon içeren yararlıdır return deyimleri. Kapsamlı kilitleri özel durum-güvenli kod yazma de yardımcı olabilir. Zaman bir throw deyimi neden olan yığın açılımı, herhangi bir etkin kapsamlı LOCK yıkıcı olarak adlandırılır ve bu nedenle Karşılıklı dışlama nesne her zaman doğru serbest.
Not
Kullandığınızda critical_section::scoped_lock, reader_writer_lock::scoped_lock, ve reader_writer_lock::scoped_lock_read sınıfları değil el ile serbest Karşılıklı dışlama alttaki nesneye erişim.Bu, geçersiz bir durumda çalışma zamanı koyabilirsiniz.
Olay
Concurrency::event sınıfı, durumu erdiği veya erdiği olmayan bir eşitleme nesnesi temsil eder. Paylaşılan verilere erişimi korumak amacı ise, kritik bölümler gibi eşitleme nesnelerinde aksine olayların akışını eşitleyin.
event Sınıfı, bir görevin başka bir görev için çalışma tamamlandığında yararlıdır. Örneğin, bir görevin başka bir görev, verileri bir ağ bağlantısı veya bir dosyadan okuma izni olduğunu sinyal.
Yöntemleri ve özellikleri
Aşağıdaki tabloda birkaç tarafından tanımlanan önemli yöntem gösterir event sınıfı.
Method |
Description |
---|---|
Olay haline erdiği bekler. |
|
Olay, sinyal verilmiş durumuna ayarlar. |
|
Olay erdiği durumuna ayarlar. |
|
Birden çok olay haline erdiği bekler. |
Örnek
Nasıl kullanılacağını gösteren bir örnek için event sınıfı için bkz: Windows API için eşitleme veri yapılarını karşılaştırma.
Top
İlgili Bölümler
Windows API için eşitleme veri yapılarını karşılaştırma
Windows API'si tarafından sağlanan için eşitleme veri yapılarını davranışı karşılaştırır.Eşzamanlılık çalışma zamanı
Paralel programlama basitleştirir ve ilgili konuların bağlantılarını içeren eşzamanlılık çalışma açıklar.