Thread Kullanımı

Linux altında thread kullanımı C kütüphanesinin bir parçası olan pthread kütüphanesi ile yapılmaktadır.

Diğer işletim sistemlerinin aksine, Linux'te thread ile process arasında çok az fark vardır.

Bu nedenle thread'ler, LightWeightProcess olarak adlandırılmaktadır.

Linux versiyon 2.6 öncesindeki thread implementasyonu LinuxThreads şeklinde adlandırılıyordu. Bu implementasyon performans ve senkronizasyon işlemleri açısından önemli limitlere sahipti. Maksimum çalışabilecek thread sayısı 1000'li rakamlarla sınırlıydı.

2003 yılında özellikle IBM ve RedHat firmasındaki geliştiricilerin başını çektiği ekip, Native POSIX Thread Library (NPTL) projesini kullanılabilir duruma getirmeyi başardı ve ilk olarak enterprise dünyanın Linux üzerinde Java Virtual Machine performansı şikayetlerini çözüme kavuşturmak için RedHat Enterprise versiyon 3'te kullanılmaya başlandı. Ardından GNU C kütüphanesindeki yeni NPTL implementasyonu gelmeye başladı. Günümüzde de her iki implementasyon glibc içerisinde yer almakta, kullanılan çekirdek versiyonu tarafından uygun implementasyon seçilmektedir.

Daha detaylı bilgi için en önemli ilk 5 Linux gurularından olan Ulrich Drepper ve Ingo Molnar'ın dizayn dokümanını inceleyebilirsiniz: http://www.akkadia.org/drepper/nptl-design.pdf

Çalışan thread implementasyonunu getconf GNU_LIBPTHREAD_VERSION komutuyla öğrenebilirsiniz.

Her iki implementasyon da thread yönetiminin tamamen kullanıcı kipinde çalışan bir Virtual Machine üzerinde yapıldığı green threads uyarlaması değildir.

Her program başlatıldığında, bir kernel thread'i de otomatik olarak oluşturulur.

Çalışan herhangi bir process'in thread spesifik bilgileri /proc/<PID>/task dizini altında yer alır. Single-thread uygulamalar için de bu dizin altında PID ile aynı değere sahip bir task kaydı olduğu görünecektir.

results matching ""

    No results matching ""