Mutex Kullanımı
pthread kütüphanesi mutual exclusive kilit mekanizmalarını pthread_mutex fonksiyonları ile yönetir.
Mutex tanımı ve ilklendirmesi şu şekilde yapılır:
pthread_mutex_t control_mutex = PTHREAD_MUTEX_INITIALIZER;
Çalışma zamanında oluşturup sonradan ilklendirmek için:
pthread_mutex_t control_mutex;
...
pthread_mutex_init(&control_mutex, NULL);
...
pthread_mutex_destroy(&control_mutex);
pthread_mutex_init
'in ikinci argümanı pthread_mutexattr_
ailesi fonksiyonlarla mutex spesifik özelliklerle doldurulabilinir.
Mutex'i ele almaya çalışalım:
pthread_mutex_lock(&control_mutex);
Eğer mutex o an başka bir thread tarafından alınmış ise, mutex tipine göre aşağıdaki 3 durumdan biri gerçekleşir:
Fonksiyon mutex'i elde edene kadar bekler (öntanımlı durum)
Fonksiyon -EDEADLK hatasıyla döner
Fonksiyon başarılı bir şekilde döner (recursive mutex kullanımı)
Mutex'i serbest bırakmak için:
pthread_mutex_unlock(&control_mutex);