std :: mutex'in iki katı kadar kritik bölümlerle gerçekleştirilir, bu nedenle OS Mutex'ten (Windows'taki) çok daha hızlıdır. Ancak, Windows CRITICAL_SECTION kadar hızlı değil.Neden std :: mutex, CRITICAL_SECTION
Zamanlamaları tek iplik sadece dar bir döngü:
423.76ns ATL CMutex
41.74ns std::mutex
16.61ns win32 Critical Section
Sorum muteks yapıyor std başka ne olduğu ::? Kaynağa baktım ama takip edemedim. Bununla birlikte, Crit Sec'e geçmeden önce fazladan adımlar vardı. Sorularım: faydalı olan bu ek adımlar nelerdir? Yani, ekstra adımlar nelerdir; CRITICAL_SECTION kullanarak ne kaçırırdım?
Ayrıca bir Mutex ile uygulanmadıysa, buna neden Mutex adını verdiler?
Zamanlama nedir? Bir muteks yaratmak, kilitlemek, kilidini açmak, ... Win32 muteksinden farklara kadar: bir Win32 muteks çapraz işlem muteksidir. Standart sadece daha hafif bir yapıya sahip olabilen bir çapraz-iplik muteksini çağırır (ve Windows kritik bir bölüm ile çalışır). –
CMutex bir muteks ile uygulandı, ucuz değil. std :: mutex, Eşzamanlılık Çalışma Zamanı'nın üzerine kurulmuş, işletim sistemi tarafından sağlanan iş parçacığı ve programlama ilkellerinin ötesinde önemli ölçüde genişleyen işlevselliği olan oldukça kodlu bir koddur. Katmanlama ağırdır, bu da bedavaya gelmez. Bir critsect amacına hizmet ederse ve ek yük gerçekten önemli ise o zaman problemi çöz ve kullan. –
Zamanlama sadece kilitleme/kilit açma. Ben sadece std :: mutex'in kriterin ötesine geçtiğini merak ediyorum. Eğer yararlıysa o zaman istememeliyim? Eğer işe yaramıyorsa, neden bunu yapıyor? Sanırım std :: mutex kullanacağım, ama sadece ne yaptığını merak ediyorum. – Philip