HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Selamlar
Projelerinizde kullanabileceğiniz Recursive Mutex Sınıfı:
Kullanımı:
Neden buna ihtiyaç duyuyoruz?
Threadler arasında bazen senkronizasyon ihtiyacı oluyor, Örneğin bir vectorumuz var ve A Threadi içerisinde çalışıyor ayrıca bu Thread vectore veri giriş/çıkışı yapıyor, B Threadi ise A Threadi içerisinde veri girişi yapılan Vector üzerinde okuma ve sonuca göre işlem yapıyor bu threadler farklı iş parçacıkları içerisinde olmasından dolayı okuma yaptığımız sırada vectore bir veri girişi olması halinde B Threadi içerisinde heap memory corruption ile karşılaşıyoruz bu kritik bir hata olduğu için uygulamanın çakılmasına neden oluyor. Bu nedenle farklı threadler arasında ortaklaşa gerçekleştirilen işlemlerden önce mutex ile işlemleri senkronize halde tutmamız gerekiyor
Ayrıca bu sınıfın şöyle tatlı bir olayı var dikkat ettiyseniz yıkıcısında "target.unlock();" çalışıyor dolayısıyla fonksiyon içerisinde iş bittiğinde Guard kilidi kaldırıyor.
Projelerinizde kullanabileceğiniz Recursive Mutex Sınıfı:
C++:
#pragma once
#include <mutex>
class Guard
{
public:
Guard(std::recursive_mutex& mutex) : target(mutex) { target.lock(); }
Guard(std::recursive_mutex* mutex) : target(*mutex) { target.lock(); }
~Guard() { target.unlock(); }
protected:
std::recursive_mutex& target;
};
Kullanımı:
C++:
std::recursive_mutex m_vecLootListLock; // Global
Guard lock(m_vecLootListLock);
Neden buna ihtiyaç duyuyoruz?
Threadler arasında bazen senkronizasyon ihtiyacı oluyor, Örneğin bir vectorumuz var ve A Threadi içerisinde çalışıyor ayrıca bu Thread vectore veri giriş/çıkışı yapıyor, B Threadi ise A Threadi içerisinde veri girişi yapılan Vector üzerinde okuma ve sonuca göre işlem yapıyor bu threadler farklı iş parçacıkları içerisinde olmasından dolayı okuma yaptığımız sırada vectore bir veri girişi olması halinde B Threadi içerisinde heap memory corruption ile karşılaşıyoruz bu kritik bir hata olduğu için uygulamanın çakılmasına neden oluyor. Bu nedenle farklı threadler arasında ortaklaşa gerçekleştirilen işlemlerden önce mutex ile işlemleri senkronize halde tutmamız gerekiyor
Ayrıca bu sınıfın şöyle tatlı bir olayı var dikkat ettiyseniz yıkıcısında "target.unlock();" çalışıyor dolayısıyla fonksiyon içerisinde iş bittiğinde Guard kilidi kaldırıyor.
En Çok Reaksiyon Alan Mesajlar
"std::recursive_mutex m_vecLootListLock; // Global"
Bu değişkeni global olarak kullanırsanız ve unlock edilmeden birden fazla lock edilmeye çalışıldığında muhtemel bir deadlock'a sebep olacaktır. Kolaylık sağlaması için zaten kitli mi diye kontrol eden bir değişken kullanıldıktan sonra kitlemeye geçilebilir.
Paylaşım için teşekkürler.Selamlar
Projelerinizde kullanabileceğiniz Recursive Mutex Sınıfı:
C++:#pragma once #include <mutex> class Guard { public: Guard(std::recursive_mutex& mutex) : target(mutex) { target.lock(); } Guard(std::recursive_mutex* mutex) : target(*mutex) { target.lock(); } ~Guard() { target.unlock(); } protected: std::recursive_mutex& target; };
Kullanımı:
C++:std::recursive_mutex m_vecLootListLock; // Global Guard lock(m_vecLootListLock);
Neden buna ihtiyaç duyuyoruz?
Threadler arasında bazen senkronizasyon ihtiyacı oluyor, Örneğin bir vectorumuz var ve A Threadi içerisinde çalışıyor ayrıca bu Thread vectore veri giriş/çıkışı yapıyor, B Threadi ise A Threadi içerisinde veri girişi yapılan Vector üzerinde okuma ve sonuca göre işlem yapıyor bu threadler farklı iş parçacıkları içerisinde olmasından dolayı okuma yaptığımız sırada vectore bir veri girişi olması halinde B Threadi içerisinde heap memory corruption ile karşılaşıyoruz bu kritik bir hata olduğu için uygulamanın çakılmasına neden oluyor. Bu nedenle farklı threadler arasında ortaklaşa gerçekleştirilen işlemlerden önce mutex ile işlemleri senkronize halde tutmamız gerekiyor
Ayrıca bu sınıfın şöyle tatlı bir olayı var dikkat ettiyseniz yıkıcısında "target.unlock();" çalışıyor dolayısıyla fonksiyon içerisinde iş bittiğinde Guard kilidi kaldırıyor.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 0
- Görüntüleme
- 32
- Cevaplar
- 1
- Görüntüleme
- 24
- Cevaplar
- 0
- Görüntüleme
- 49
