Mutex - Etkinlik
C # 'da birçok farklı diş açma senkronizasyon seçeneği vardır. Daha yaygın olarak kullanılan ikisi muteks ve olaydır. Bu ikisi arasındaki fark tam olarak nedir? Hangisi daha iyi bir seçenek?
Olay seçeneği, iş parçacığı bir olay yayınlanana kadar engelleme seçeneği sunabilir ve bu nedenle “olay” adını verebilir. Bir şeyi uykuya koymak ve sadece önemli bir şey olduğunda uyandırmakla aynı şeydir. Olaylar mutekslerden farklıdır, çünkü mutekslerin sinyalleme seçeneği veya işlevi yoktur. Olaylar, beklemeyi başarabilen biri uyandığında sinyali temizleyebilir. API'ler bile, farklı olaylardan biri veya tümü sinyal verilene kadar engelleme seçeneğine izin verebilir. Ayrıca, olaylar çekirdek nesneleridir. Mutekslere kıyasla "daha hafif" değildirler. Bir olay temel olarak iki durumu olan bir çekirdek nesnesidir. Normalde bir olay, bir olayın gelişini ve hatta bazen bir G / Ç işleminin sona erdiğini gösterir.
“Mutex”, Karşılıklı Dışlama anlamına gelir. Paylaşılan kaynaklar için kapsamlı bir koordinasyon mekanizmasıdır. Bunu bir işlem türü olarak düşünün. Paylaştığınız birkaç kaynağa (yalnızca başkalarının zaten eriştiği durumda) erişmek istediğiniz halde beklemek zorunda değilsiniz. Muteks, karşılıklı dışlamayı yürürlüğe koymak için mevcut olmasına rağmen iki eyaletten oluşur. Bu, genellikle paylaşılan bir kaynağı muteksin talep edildiği kısımdan serbest bırakılacağı kısma güncelleyen bir kod parçasını korumak istediğinizde kullanılır. Bu, başka hiçbir ipliğin bölümden geçememesine yol açar.
Bir muteksi yardımıyla bir olayı simüle etmeye çalışan insanlar, kilidin alındığı veya olay işaret edildiği anda, kilit serbest bırakılana kadar diğer herkesi dışarıda tuttuğu sorunla karşılaşmak zorunda kaldı. Bu, bildirilen bir olayın anlambilimi değildir. Bir olay kaydedilmiş olarak kalabilir ve herhangi bir kilit içermemesi durumunda tüm iş parçacığı testi için bir kapı biçimi kullanılabilir. İşlemler arası senkronizasyonu taahhüt eden Mutex, çekirdek modu nesnesindedir. Bir yöntem altında çok iş parçacıklı senkronizasyon için yapılan olaylar kullanıcı modu nesnesinde.
Muteks nesnesi çok ağır ve çok genel. Olay nesneleri çok daha hafiftir. Kullanıcı modu senkronizasyonu çoğu durumda daha az CPU çevrimi vermesi nedeniyle kullanılır. Mutex çok kritik bir bölüm gibidir ve paylaşılan kaynaklara erişimi senkronize etmek için kullanılır. Olaylar tamamen farklı bir işleve sahiptir, çünkü görevleri senkronize etmek veya bazı insanlar için görev zamanlamasını yönetmek için kullanılırlar.
Olaylar daha çok bir koşul değişkenidir, Mutex'in aksine,
Bazı terminolojilerde izleyebilir veya geleneksel bir semafor / muteks biçimi olabilir.
Özet:
1. olay seçeneği iş parçacığı bir olay yayınlanana kadar engelleme seçeneği, böylece "olay" adını verebilir.
2. Bir olay temel olarak iki durumu olan bir çekirdek nesnesidir. Normalde bir olay, bir olayın gelişini ve hatta bazen bir G / Ç işleminin sona erdiğini gösterir.
3. “Mutex”, Karşılıklı Dışlama anlamına gelir. Paylaşılan kaynaklar için kapsamlı bir koordinasyon mekanizmasıdır..
İşlemler arası senkronizasyonu amaçlayan muteks çekirdek modu nesnesindedir. Bir yöntem altında çok iş parçacıklı senkronizasyon için yapılan olaylar kullanıcı modu nesnesinde.
5.Etkinlikler, Mutex'in aksine, daha çok bir koşul değişkenidir.
Bazı terminolojilerde izleyebilir veya geleneksel bir semafor / muteks biçimi olabilir.