Merhaba arkadaşlar.Bu makalemde sizlere Advanced c# ın çok parçacıklı programlama yapısı içerisinde yer alan Mutex sınıfından ve mutex sınıfı ile kod eşitlemeden bahsedeceğim.
Öncelikle nedir bu mutex sınıfı?
Mutex sınıfı thread referansları içinde tanımlanmış, win32 sistem yönetiminde çalışma prensibi sunan bir temsilcidir.
Mutex sınıflarını monitör kilidinde ,kodu serileştirmede veya parçacıkları database kavramı içinde serileştirmede kullanabiliriz.Verdiğim örneklerden anlıyacağınız gibi mutex sınıfların rahat hareket özellikleri vardır yane esnek bir yapı içindedirler bundan ötürüde yavaş çalışırlar.
C# ta mutex kavramını üç yapıda oluşturabiliriz.
Öncelikle referanslarımıza ;
using System.Threading; ad alanını ekliyoruz..
ve bununla beraber aşağıdaki üç yapıdan ile mutex oluşturabiliriz.
Mutex();//adı olmayan mutex tir.geçerli parçacık tarafından kilitlenir.
Mutex(bool initiallyOwned);//parçacığın onu kilitlemek isteyip istemediğini ayarlar.
Mutex(bool initiallyOwned,string MutexName);//mutex in sahibi olup olmadığını ve adını belirlememizi sağlar.
Şimdi, mutex yapılarına bir örnek ile devam edelim……
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace DeveloperMania
{
public class veri
{
Mutex mutexname = new Mutex(false);//mutex işlemimiz bukadar devamı konsept yapı,mutex in işlerliği ve mutexe katılan şeylerle alakalı…
public void aktarımıyönlendir(string text)
{
mutexname.WaitOne();// * aşağıda açıklaması vardır….
Console.WriteLine("veri.aktarımıyönlendir * baslat");
Console.WriteLine("veri.aktarımıyönlendir * calisma_agi");
for (int i = 0; i < 100; i++)
{
Console.WriteLine(text);
}
Console.WriteLine("\nveri.aktarımıyönlendir * aktarım_sonbuldu");
mutexname.Close();
}
}
class MutexWorker
{
public static veri dm = new veri();
public static void calisma_agiThreadPrensibi1()
{
Console.WriteLine("calisma_agi thread * basla");
Console.WriteLine("calisma_agi thread * Calling veri.aktarımıyönlendir");
dm.aktarımıyönlendir("a");
Console.WriteLine("calisma_agi thread * aktarım için geri dön");
}
}
}
*WaitOne(); Yukarıda tanımladığımız waitone ı burda açıklamak istedim çünkü mutex yapısı için önemli bir yapı.WaitOne mutex in daha fazla esneklik kazanmasını sağlayan yüklemelerdir.