Muteks ve Olay Arasındaki Fark

Anonim

Mutex ve Olay

C # 'da tam olarak ne iş parçacığı eşleme seçenekleri vardır. İkisi muteks ve olay daha yaygın olarak kullanılır. Bu ikisinin arasındaki fark ne tam olarak nedir? Hangisi daha iyi bir seçenektir?

Etkinlik seçeneği, bir etkinlik yayınlanıncaya kadar iş parçacığına engelleme seçeneği sunabilir, böylece "olay" adı verilir. "Bir şeyler uyku koymak ve yalnızca önemli olan şey olduğunda uyanmakla aynı şey. Mutekslerde, sinyalleme seçeneği veya işlevi bulunmadığından, olaylar mutekslerin aksine. Olaylar, beklemekte olan biri uyandığında sinyali temizleyebiliyor. Hatta API'ler bile, farklı olaylardan biri veya tamamı sinyal verilinceye kadar seçeneğin engellenmesine izin verebilirler. Buna ek olarak, olaylar çekirdek nesnelerdir. Mutekslere kıyasla "daha açık" değildirler. Bir olay temel olarak iki duruma sahip bir çekirdek nesnedir. Normalde, bir olay, bir olayın gelmesini ve hatta bazen bir G / Ç işleminin bittiğini sinyal verir.

"Mutex" Karşılıklı Hariç Tutmanın kısaltmasıdır. Paylaşılan kaynaklar için kapsamlı koordinasyon mekanizmasının bir şeklidir. Bunu bir işlem biçimi olarak düşünün. Birkaç paylaşılan kaynağa (ancak başkalarının ona zaten eriştiği durumda) engellemek istediğiniz halde, beklemek zorunda değilsiniz. Muteks, iki devletten oluşur; ancak, karşılıklı dışlanma gerçekleştirmek için varolur. Bu, mutex'in talep edildiği bölümden paylaşılan bir kaynağın genelde güncellendiği kısma kadar güncelleştiren bir kod stresini korumak istediğiniz zaman içindir. Bu, bölmeden başka bir ipliğin geçememesine neden olur.

Bir muteks yardımı ile bir olayı taklit etmeye çalışan insanlar, sorunun farkına varmak zorundaydı; burada kilit elde edildiğinde veya olay sinyal alındığında, kişi herkesi dışarıda tutuyordu kilit açılıncaya kadar. Bu, bir olayın işaretlendiği anlambilim değildir. Herhangi bir kilit bulunmayan olayda, bir iplik testi için bir etkinlik kaydedilebilir ve bir kapı şekli kullanılabilir. İşlemler arası senkronizasyonu taahhüt eden Mutex, çekirdek modu nesnesinde. Bir yöntemle birden çok iş parçacıklı senkronizasyon için yapılan etkinlikler kullanıcı modu nesnesindedir.

Mutex nesnesi çok ağır ve çok genel. Olay nesneleri çok daha açıktır. Kullanıcı modu eşitlemesi çoğu durumda daha az CPU döngüsü verdiği için kullanılır. Mutex, kritik bir bölüme çok benzer ve paylaşılan kaynaklara erişimi senkronize etmek için kullanılır. Görevleri senkronize etmek veya bazı insanlar için görev zamanlamasını yönetmek için kullanılan olayların tamamen farklı bir işlevi vardır.

Bazı terminolojide bir

monitörüne benzeyen Mutex'in aksine, olaylar daha çok bir koşul değişkendir veya semafor / muteksin geleneksel bir biçimi olabilir.

Özet:

1. Etkinlik seçeneği, bir etkinlik yayınlanıncaya kadar iş parçacığına engelleme seçeneği sunabilir, bu nedenle "olay" adı verilebilir. “2

. Bir olay temel olarak iki duruma sahip bir çekirdek nesnedir. Normalde, bir olay, bir olayın gelmesini ve hatta bazen bir G / Ç işleminin bittiğini sinyal verir.

3. "Mutex", Karşılıklı Hariç Tutmanın kısaltmasıdır. Paylaşılan kaynaklar için kapsamlı koordinasyon mekanizmasının bir şeklidir.

4. İşlemler arası senkronizasyonu taahhüt eden Mutex, çekirdek modu nesnesinde. Bir yöntemle birden çok iş parçacıklı senkronizasyon için yapılan etkinlikler kullanıcı modu nesnesindedir.

5. Olaylar, bir terminolojideki bir

monitörüne benzeyen Mutex'in aksine, koşul değişkenidir ve geleneksel bir semafor / muteks biçimi olabilir.