Basit Evre İşlemleri
Önceki POSIX Evreleri Sonraki
Basit Evre İşlemleri
Bu işlevler fork, exit ve wait işlevlerinin evre eşdeğerleridir.
int pthread_create
(pthread_t      *evre,
 pthread_attr_t *öznitelik,
 void         *(*başlatma_işlevi)(void *),
 void           *arg)
işlev
pthread_create çağıran evre ile aynı zamanda çalışan yeni bir kontrol evresi yaratır. Yeni evre ilk argümanına arg geçirerek başlatma_işlevi işlevini çağırır. Yeni evre pthread_exit işlevini çağırarak her ikisini de açıkça sonlandırır, veya başlatma_işlevi işlevinden dönerek örtük olarak sonlandırır. İkinci yaklaşım başlatma_işlevi işlevinin çıkış kodu olarak dönen sonuçla pthread_exit işlevinin çağrılmasına eşdeğerdir.
öznitelik argümanı yeni evreye uygulanacak evre özelliklerini belirler. Ayrıntılar için bkz. Evre Öznitelikleri. öznitelik argümanı NULL da olabilir, bu durumda öntanımlı özellikler kullanılır: oluşturulan evre birleşimcidir (ayrık değildir) ve sıradan (gerçek zamanlı değil) bir zamanlama ilkesine sahiptir.
Başarı halinde, yeni oluşturulan evrenin tanıtıcısı evre argümanıyla gösterilen yerde saklanır ve bir 0 döndürülür. Hata halinde, sıfırdan farklı bir hata kodu döndürülür.
İşlev aşağıdaki hataları döndürebilir:
EAGAIN
Yeni evre için süreç oluşturacak yeterli sistem kaynağı yok veya PTHREAD_THREADS_MAX den fazla sayıda evre rtkin.
void pthread_exit
(void *dönüş_değeri)
işlev
pthread_exit çağrılan evrenin çalıştırılmasını sonlandırır. Çağrılan evre için pthread_cleanup_push ile atanmış bütün temizlik işleyicileri ters sırayla çalıştırılır (son eklenen işleyici ilk çalıştırılır). Ardından evreye özgü veriler için kullanılan sonlandırma işlevleri, NULL olmayan değere sahip, çağıran evreyle ilişkili bütün anahtarlar için çağrılır (Evreye Özgü Veri). Son olarak, çağıran evrenin çalıştırılması durdurulur.
dönüş_değeri argümanı evrenin dönüş değeridir. pthread_join kullanarak başka bir evreden elde edilebilir.
pthread_exit işlevi hiç bir zaman dönmez.
int pthread_cancel
(pthread_t evre)
işlev
pthread_cancel işlevi evre argümanıyla belirtilen evreye bir iptal isteği gönderir. Eğer böyle bir evre yoksa, pthread_cancel başarısız olur ve ESRCH döndürür. Aksi takdirde 0 döndürür. Ayrıntılar için bkz. İptaletme.
int pthread_join
(pthread_t evre,
 void    **evre_dönüş)
işlev
pthread_join evre ile tanımlanan evre sonlanıncaya kadar çağıran evrenin çalıştırılmasını pthread_exit işlevini çağırarak veya iptal edilerek askıya alır.
Eğer evre_dönüş NULL değilse, evrenin dönüş değeri evre_dönüş ile gösterilen yerde saklanır. evrenin dönüş değeri ya pthread_exite verdiği argümandır ya da eğer evre iptal edildiyse PTHREAD_CANCELED değeridir.
Birleşmiş evre evre birleşebilir durumda olmalıdır: pthread_detach ile ayrılmış olmamalıdır veya PTHREAD_CREATE_DETACHED özelliği pthread_create işlevine verilmemiş olmalıdır.
Birleşebilir bir evre sonlandığında, onun bellek özkaynakları (evre tanımlayıcısı ve yığıt) başka bir evre üzerinde pthread_join uygulayıncaya kadar serbest bırakılmazlar. Bu nedenle, bellek kaçağını önlemek için pthread_join işlevinin her birleşebilir evre için çağrılması gerekir.
Verilen bir evrenin sonlanması için en çok bir evre bekleyebilir. Üzerinde başka bir evrenin sonlanması için beklemekte olduğu, bir evre evresi üzerinde, pthread_join çağrısı hata döndürür.
pthread_join bir iptal noktasıdır. pthread_joinde askıya alınmış bir evre iptal edilirse, evre hemen işletmeyi sürdürür ve evre evresinin sonlanması beklenmeden iptal işletilir. Eğer pthread_join süresince iptal yaşanırsa, evre evresi birleşmemiş kalır.
Başarı halinde, evrenin dönüş değeri evre_dönüş ile gösterilen yerde saklanır ve 0 döndürülür. Hata halinde, aşağıdaki değerlerden biri döndürülür:
ESRCH
evre ile belirtilene uygun bir evre bulunamadı.
EINVAL
evre evresi ayrılmış veya başka bir evre evrenin sonlanmasını beklemektedir.
EDEADLK
evre argümanı çağıran evreyi belirtmektedir.
Önceki Üst Ana Başlık Sonraki
POSIX Evreleri Başlangıç Evre Öznitelikleri
Bir Linux Kitaplığı Sayfası