Linux Sistem Programlama
  • Kapak
  • Önsöz
  • Sistem Programlamaya Giriş
    • Tarihçe
    • Standartlar
    • Sistem Çağrıları
    • API ve ABI
  • Linux Çekirdeği
  • Kabuk
  • Dosya Sistemi
  • Kullanıcı, Grup ve Erişim Yetkileri
  • Process Kavramı
  • Dosya İşlemleri
  • IO Modelleri
    • Senkron IO
    • Asenkron IO
  • Sinyaller
    • Temel Kavramlar
    • Sinyal Yakalama ve Gönderme
    • Signal-Safe Kavramı
    • Sinyal Kümeleri
    • Sinyal Bloklama
    • Sinyal İle Birlikte Veri Gönderimi
    • Sinyal ve Core Dump
    • RealTime Sinyaller
    • File Descriptor Üzerinden Sinyal İşleme
    • Genel Değerlendirme
  • Thread Kullanımı
    • Thread Oluşturma
    • Thread Türleri
    • Thread Sonlandırma
    • Mutex Kullanımı
    • SpinLock & Mutex Karşılaştırması
    • Futex
  • Semafor Kullanımı
    • Semafor ve Mutex Karşılaştırması
    • Semafor Türleri
    • Semafor Operasyonları
  • Shared Memory Kullanımı
  • Memory Mapped IO
  • Soket Kullanımı
    • Soket API
    • TCP Soketleri
    • UDP Soketleri
    • UNIX Soketleri
    • Birden Çok İstemciyle Çalışma
  • Timer Kullanımı
    • Basit Timer Yapıları
    • POSIX Timer API
    • Event Loop İçinde Kullanım
  • Daemon Oluşturma
  • Capabilities API
  • Paylaşımlı Kütüphaneler
    • Kütüphane Gereksinimi
    • Statik Kütüphaneler
    • Kod Referanslarının Ele Alınması
    • Paylaşımlı Kütüphanelerin Oluşturulması
    • Dinamik Yükleme
    • Derleme Zamanında Kütüphanelerin Aranması
    • Çalışma Zamanında Kütüphanelerin Aranması
    • Statik ve Dinamik Kütüphanelerin Beraber Kullanılması
    • Versiyon Yönetimi
  • Process'ler Arası Haberleşme
  • Memory Allocation
  • Memory Barriers
  • Hata Ayıklama Yöntemleri
    • GNU Debugger
    • Strace
  • GNU Build Sistemi Araçları
    • Make
    • Autoconf, Automake
  • Ek Bölümler
    • Derleyici Optimizasyonları
    • Clang ve LLVM
    • İçsel ve Anonim Fonksiyonlar
      • İçsel Fonksiyonlar
      • Anonim Fonksiyonlar
    • FreeTDS ile SqlServer Bağlantısı
  • Kaynak Dosyalar
Powered by GitBook
On this page

Was this helpful?

  1. Thread Kullanımı

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);
PreviousThread SonlandırmaNextSpinLock & Mutex Karşılaştırması

Last updated 5 years ago

Was this helpful?