Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Eşzamanlılık Çalışma Zamanı, birden çok iş parçacığından paylaşılan verilere erişimi eşitlemenize olanak sağlayan çeşitli veri yapıları sağlar. Bu veri yapıları, sık sık değiştirdiğiniz verileri paylaştığınızda kullanışlıdır. Eşitleme nesnesi, örneğin kritik bir bölüm, diğer iş parçacıklarının paylaşılan kaynak kullanılabilir olana kadar beklemesine neden olur. Bu nedenle, sık kullanılan verilere erişimi eşitlemek için böyle bir nesne kullanırsanız, uygulamanızda ölçeklenebilirliği kaybedebilirsiniz.
Paralel Desenler Kitaplığı (PPL), eşitlemeye gerek kalmadan çeşitli iş parçacıkları veya görevler arasında bir kaynağı paylaşmanızı sağlayan eşzamanlılık::combinable sınıfını sağlar. sınıfı hakkında combinable daha fazla bilgi için bkz . Paralel Kapsayıcılar ve Nesneler.
Bölümler
Bu konuda, aşağıdaki zaman uyumsuz ileti bloğu türleri ayrıntılı olarak açıklanmaktadır:
kritik_bölüm
concurrency::critical_section sınıfı, diğer görevlere öncelik tanıyan ve işbirliği yapan bir karşılıklı dışlama nesnesini temsil eder. Kritik bölümler, birden çok iş parçacığı paylaşılan verilere özel okuma ve yazma erişimi gerektirdiğinde yararlıdır.
Sınıf critical_section yeniden girişli değil.
Concurrency::critical_section::lock yöntemi, zaten kilidin sahibi olan iş parçacığı tarafından çağrılırsa concurrency::improper_lock türünde bir özel durum fırlatır.
Yöntemler ve Özellikler
Aşağıdaki tabloda sınıfı tarafından critical_section tanımlanan önemli yöntemler gösterilmektedir.
| Metot | Açıklama |
|---|---|
| kilit | Kritik bölümü alır. Çağrı bağlamı, kilidi alana kadar bekler. |
| kilitlemeyi_dene | Kritik bölümü almaya çalışır, ancak engellemez. |
| kilidi açmak | Kritik bölümü serbest bırakır. |
[Üst]
okuyucu_yazar_kilidi
concurrency::reader_writer_lock sınıfı, paylaşılan verilere iş parçacığı güvenli okuma/yazma işlemleri sağlar. Birden çok iş parçacığı paylaşılan kaynağa eşzamanlı okuma erişimi gerektirdiğinde ancak bu paylaşılan kaynağa nadiren yazıldığında okuyucu/yazıcı kilitlerini kullanın. Bu sınıf, aynı anda yalnızca bir iş parçacığına bir nesneye yazma erişimi verir.
reader_writer_lock sınıfı, critical_section sınıfına kıyasla daha iyi performans gösterebilir çünkü bir critical_section nesnesi, paylaşılan bir kaynağa özel erişim sağlar ve bu da eşzamanlı okuma erişimini önler.
critical_section sınıfı gibi, reader_writer_lock sınıfı da diğer görevlere öncelik tanıyan ve işbirliğine dayanan bir karşılıklı dışlama nesnesini temsil eder.
Paylaşılan bir kaynağa yazması gereken bir iş parçacığı okuyucu/yazıcı kilidi alırsa, yazıcı kilidi bırakana kadar kaynağa erişmesi gereken diğer iş parçacıkları engellenir.
reader_writer_lock sınıfı, bekleyen okuyucuların engellemesini kaldırmadan önce bekleyen yazarların engellemesini kaldıran bir tür kilit olan yazma öncelikli kilit örneğidir.
critical_section sınıfı gibi, reader_writer_lock sınıfı da yeniden girilemez.
concurrency::reader_writer_lock::lock ve concurrency::reader_writer_lock::lock_read yöntemleri, zaten kilidin sahibi olan bir iş parçacığı tarafından çağrıldığında improper_lock türünde bir özel durumu oluşturur.
Not
reader_writer_lock Sınıf yeniden girişli olmadığından, salt okunur kilidi okuyucu/yazıcı kilidine yükseltemez veya okuyucu/yazıcı kilidini salt okunur bir kilide düşüremezsiniz. Bu işlemlerden birinin gerçekleştirilmesi belirtilmeyen davranışlar oluşturur.
Yöntemler ve Özellikler
Aşağıdaki tabloda sınıfı tarafından reader_writer_lock tanımlanan önemli yöntemler gösterilmektedir.
| Metot | Açıklama |
|---|---|
| kilit | Kilit için okuma/yazma erişimi alır. |
| kilitlemeyi_dene | Kilit için okuma/yazma erişimi almaya çalışır, ancak engellemez. |
| lock_read | Kilide salt okunur erişim elde eder. |
| try_lock_read | Kilidi engellemeden salt okunur erişim elde etmeye çalışır. |
| kilidi açmak | Kilidi serbest bırakır. |
[Üst]
scoped_lock ve scoped_lock_read
critical_section ve reader_writer_lock sınıfları, karşılıklı dışlama nesneleriyle çalışma yöntemlerinizi basitleştiren iç içe yardımcı sınıflar sunar. Bu yardımcı sınıflara kapsamlı kilitler denir.
critical_section sınıfı, concurrency::critical_section::scoped_lock sınıfını içerir. Oluşturucu, sağlanan critical_section nesneye erişim alır; yıkıcı bu nesneye erişimi serbest bırakır. sınıfı reader_writer_lock eşzamanlılık::reader_writer_lock::scoped_lock sınıfını içerir. Bu sınıf, critical_section::scoped_locksağlanan reader_writer_lock nesneye yazma erişimini yönetmesi dışında benzerdir.
reader_writer_lock sınıfı ayrıca eşzamanlılık::reader_writer_lock::scoped_lock_read sınıfını içerir. Bu sınıf, sağlanan reader_writer_lock nesneye okuma erişimini yönetir.
Kapsamlı kilitler, critical_section ve reader_writer_lock nesneleriyle manuel çalışırken çeşitli avantajlar sağlar. Genellikle yığın üzerinde kapsamlı bir kilit tanımlarsınız. Kapsamlı bir kilit, yok edildiğinde karşılıklı dışlama nesnesine erişimi otomatik olarak serbest bırakır; bu nedenle, temel alınan nesnenin kilidini el ile açmazsınız. Bu, bir işlev birden çok return deyim içerdiğinde kullanışlıdır. Kapsamlı kilitler, özel durum güvenli kod yazmanıza da yardımcı olabilir. Bir throw ifadesi yığının çözülmesine neden olduğunda, aktif kapsamlı kilidin yıkıcısı çağrılır ve bu nedenle karşılıklı dışlama nesnesi her zaman doğru şekilde serbest bırakılır.
Not
critical_section::scoped_lock, reader_writer_lock::scoped_lock ve reader_writer_lock::scoped_lock_read sınıflarını kullandığınızda, temel alınan karşılıklı dışlama nesnesine erişimi el ile serbest bırakmayın. Bu, çalışma zamanını geçersiz bir duruma sokabilir.
etkinlik
concurrency::event sınıfı, durumu işaretlenebilen veya işaretlenemeyen bir eşitleme nesnesini temsil eder. Paylaşılan verilere erişimi korumak olan kritik bölümler gibi eşitleme nesnelerinden farklı olarak, olaylar yürütme akışını eşitler.
event sınıfı, bir görev başka bir görev için çalışmasını tamamladığında kullanışlıdır. Örneğin, bir görev başka bir göreve bir ağ bağlantısından veya bir dosyadan veri okuduğunu gösterebilir.
Yöntemler ve Özellikler
Aşağıdaki tablo, event sınıfı tarafından tanımlanan önemli metotların birkaçını gösterir.
| Metot | Açıklama |
|---|---|
| beklemek | Olayın sinyal verilmesini bekler. |
| ayarla | Olayı sinyalli duruma ayarlar. |
| sıfırlama | Olayı sinyalsiz duruma ayarlar. |
| wait_for_multiple | Birden çok olayın sinyallenmesini bekler. |
Örnek
sınıfının nasıl kullanılacağını event gösteren bir örnek için bkz . Eşitleme Veri Yapılarını Windows API ile Karşılaştırma.
[Üst]
İlgili Bölümler
Eşitleme Veri Yapılarını Windows API ile Karşılaştırma
Eşitleme veri yapılarının davranışını Windows API tarafından sağlananlarla karşılaştırır.
Eşzamanlılık Çalışma Zamanı
Paralel programlamayı basitleştiren ve ilgili konulara bağlantılar içeren Eşzamanlılık Çalışma Zamanı'nı açıklar.