Çeşitli Evre İşlevleri
Önceki POSIX Evreleri Sonraki
Çeşitli Evre İşlevleri
pthread_t pthread_self
(void)
işlev
pthread_self çağıran süreç için evre tanıtıcısını döndürür.
int pthread_equal
(pthread_t evre1,
 pthread_t evre2)
işlev
pthread_equal iki evre tanıtıcısının aynı evreye belirtip belirtmediğini saptar.
Eğer evre1 ve evre2 aynı evreyi belirtiyorsa sıfırdan farklı bir değer döndürülür. Aksi takdirde 0 döndürülür.
int pthread_detach
(pthread_t evre)
işlev
pthread_detach işlevi evre evresini ayrık duruma koyar. Bu, evre tarafından harcanan bellek kaynaklarının evre sonlandığında hemen serbest bırakılacağını garantiler. Ancak, bu diğer evrelerin evre'nin sonlanmasında pthread_join kullanarak eşzamanlanmalarını engeller.
Bir evre detachstate özelliği pthread_create işlevine verilerek ilk başta ayrık oluşturulabilir. Buna karşın pthread_detach evrelerin birleşimci durumda oluşturulmalarını sağlar ve daha sonra ayrık duruma konulması gerekir.
pthread_detach tamamlandıktan sonra evre üzerinde pthread_join uygulama teşebbüsleri başarısız olur. Eğer pthread_detach çağrıldığında diğer bir evre evre evresiyle birleşiyorsa, pthread_detach birşey yapmaz ve evre'yi birleşimci durumda bırakır.
Başarı halinde 0 döndürülür. Hata halinde, aşağıdaki hata kodlarından biri döndürülür:
ESRCH
Belirtilen evre evresi bulunamadı
EINVAL
evre evresi zaten ayrık durumda
void pthread_kill_other_threads_np
(void)
işlev
pthread_kill_other_threads_np taşınabilir olmayan bir LinuxThreads oluşumudur. Yazılım içindeki çağıran evre hariç bütün evrelerin hemen sonlanmasına neden olur. Bir evre exec işlevlerinden birini, örneğin execve çağırmadan az önce çağrılmak üzere tasarlanmıştır.
Diğer evrelerin sonlandırılması pthread_cancel ile yapılmaz ve iptal mekanizması tamamen atlanır. Bu yüzden geçerli iptal durumu ve iptal türü ayarları dikkate alınmaz ve temizlik işleyicileri sonlandırılan evrelerde işletilmez.
POSIX 1003.1c'ye göre, evrelerden birindeki başarılı bir exec* yazılımdaki diğer bütün evreleri otomatik olarak sonlandırmalıdır. Bu davranış henüz LinuxThreads içinde uygulanmamıştır. pthread_kill_other_threads_np'in exec*'den önce çağrılması neredeyse aynı davranışı gösterir, tabii ki eğer exec* sonunda başarısız olmadıysa, o zaman zaten diğer bütün evreler sonlandırılmıştır.
int pthread_once
(pthread_once_t *birkerelik,
 void          (*ilklendirme_yordamı) (void))
işlev
pthread_once'ın amacı ilklendirme kodunun en çok bir kere işletilmesini temin etmektir. birkerelik argümanı PTHREAD_ONCE_INIT ile durağan olarak ilklendirilmiş bir statik ya da extern değişkeni gösterir.
birkerelik argümanıyla pthread_once ilk çağrıldığında, ilklendirme_yordamı yordamını argümansız çağırır ve once_control değişkeninin değerini ilklendirmenin yapıldığını belirtmek için değiştirir. pthread_once'a aynı birkerelik argümanıyla yapılacak tekrarlanan çağrılar birşey yapmazlar.
Eğer bir evre ilklendirme_yordamı işletilirken iptal edilirse birkerelik değişkeninin durumu sıfırlanır, böylece pthread_once'a yapılacak sonraki çağrılar yordamı tekrar çağıracaktır.
Eğer bir veya daha fazla evre, süreç tarafından pthread_once ilklendirme yordamlarını işletirken çatallaşırsa, kendi birkerelik değişkenlerinin durumları alt süreçte sıfırlanmış olarak görünürler, böylece eğer alt süreç pthread_once çağırırsa, yordamlar işletilir.
pthread_once hep 0 döndürür.
int pthread_setschedparam
(pthread_t                 hedef_evre,
 int                       ilke,
 const struct sched_param *param)
işlev
pthread_setschedparam işlevi hedef_evre için ilke ve param ile belirtildiği gibi zamanlama parametrelerini ayarlar. ilke, SCHED_OTHER (düzenli, gerçek zamanlı olmayan zamanlama), SCHED_RR (gerçek zamanlı, döner turnuva) veya SCHED_FIFO (gerçek zamanlı, ilk giren ilk çıkar) olabilir. param gerçek zamanlı ilkeler için zamanlama önceliğini belirtir. Zamanlama ilkeleri hakkında daha fazla bilgi için bkz. Sürecin İşlemci Önceliği ve Zamanlama
Gerçek zamanlı zamanlama ilkeleri SCHED_RR ve SCHED_FIFO sadece süper kullanıcı haklarına sahip süreçler için kullanılabilir.
Başarı halinde, pthread_setschedparam 0 döndürür. Hata halinde aşağıdaki hata kodlarından birini döndürür:
EINVAL
ilke SCHED_OTHER, SCHED_RR, SCHED_FIFO'dan biri değil veya param ile belirtilen öncelik değeri belirtilen ilkeye göre geçerli değil
EPERM
Gerçek zamanlı zamanlama istendi ancak çağıran süreç yeterli izinlere sahip değil
ESRCH
hedef_evre geçersiz veya sonlandırılmış
EFAULT
param süreç belleği dışında bir yeri gösteriyor
int pthread_getschedparam
(pthread_t           hedef_evre,
 int                *ilke,
 struct sched_param *param)
işlev
pthread_getschedparam hedef_evre evresi için zamanlama ilkesini ve parametrelerini elde eder, ilke ve param ile gösterilen yerlerde saklar.
pthread_getschedparam başarı halinde 0 döndürür, hata halinde aşağıdaki hata kodlarından birini döndürür:
ESRCH
hedef_evre geçersiz veya sonlandırılmış
EFAULT
ilke veya param süreç bellek alanı dışında bir yeri gösteriyor
int pthread_setconcurrency
(int seviye)
işlev
pthread_setconcurrency kullanıcı evrelerinin çekirdek evrelerine eşleştirme konusundaki eksiklerden dolayı LinuxThreads'de kullanılmaz. Kaynak uyumluluğu için bulunmaktadır. seviye değerini saklar, böylece sonraki pthread_getconcurrency çağrılarında döndürülebilir. Başka bir hareket yapmaz.
int pthread_getconcurrency
()
işlev
pthread_getconcurrency kullanıcı evrelerinin çekirdek evrelerine eşleştirme konusundaki eksiklerden dolayı LinuxThreads'de kullanılmaz. Kaynak uyumluluğu için bulunmaktadır. Ancak, pthread_setconcurrency'e yapılan son çağrıda belirlenen değeri döndürür.
Önceki Üst Ana Başlık Sonraki
Akımlar ve Çatallaşma Başlangıç XXVII. Oylum - İş Denetimi
Bir Linux Kitaplığı Sayfası