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);

results matching ""

    No results matching ""