İptaletme
Önceki POSIX Evreleri Sonraki
İptaletme
İptaletme bir evrenin başka bir evrenin işletilmesini sonlandırabildiği bir mekanizmadır. Daha kesin bir deyişle, bir evre başka bir evreye bir iptal isteği gönderebilir. Ayarlarına bağlı olarak, hedef evre isteği reddedebilir veya bir iptal noktasına ulaşana kadar erteleyebilir. Evreler pthread_create ile ilk oluşturulduklarında, daima iptal isteklerini ertelerler.
Bir evre iptal isteğine cevap verirken aslında, pthread_exit(PTHREAD_CANCELED) çağrılmış gibi davranır. Bütün temizlik işleyicileri ters sıraya işletilirler, evrelere özgü veri sonlandırma işlevleri çağrılır ve son olarak evre işletilmeyi durdurur. İptal edilen evre birleşimciyse, PTHREAD_CANCELED dönüş değeri bu evre üzerinde pthread_join işlevini çağıran evreye gönderilir. Daha fazla bilgi için bkz. pthread_exit.
İptal noktaları evrelerin bekleyen iptal isteklerini kontrol ettikleri ve uyguladıkları noktalardır. POSIX evre işlevleri pthread_join, pthread_cond_wait, pthread_cond_timedwait, pthread_testcancel, sem_wait ve sigwait iptal noktalarıdır. Ek olarak, bu sistem çağrıları da iptal noktalarıdır:
acceptopensendmsg
closepausesendto
connectreadsystem
fcntlrecvtcdrain
fsyncrecvfromwait
lseekrecvmsgwaitpid
msyncsendwrite
nanosleep  
Bu işlevleri çağıran bütün kütüphane işlevleri de (printf gibi) iptal noktalarıdır.
int pthread_setcancelstate
(int  durum,
 int *eskidurum)
işlev
pthread_setcancelstate çağıran evre için iptal durumunu değiştirir - bu iptal isteklerinin dikkate alınıp alınmayacağıdır. durum argümanı yeni iptal durumudur: PTHREAD_CANCEL_ENABLE iptali etkinleştirir veya PTHREAD_CANCEL_DISABLE iptali etkisiz kılar (iptal istekleri dikkate alınmaz).
Eğer eskidurum NULL değilse, önceki iptal durumu eskidurum ile gösterilen yerde saklanır, böylece daha sonra pthread_setcancelstate işlevine yapılacak başka bir çağrıyla geri yüklenebilir.
Eğer durum argümanı PTHREAD_CANCEL_ENABLE veya PTHREAD_CANCEL_DISABLE değilse, pthread_setcancelstate başarısız olur ve EINVAL döndürür. Aksi takdirde 0 döndürür.
int pthread_setcanceltype
(int  tür,
 int *eskitür)
işlev
pthread_setcanceltype çağıran evre için gelen iptal isteklerine verilen cevap türünü değiştirir: zamanuyumsuz (anında) veya ertelenmiş. tür argümanı yeni iptal türüdür: Bunlar ya çağıran evre iptal isteğini alır almaz iptal etmek için PTHREAD_CANCEL_ASYNCHRONOUS ya da diğer iptal noktasına kadar iptal isteğini bekletmek için PTHREAD_CANCEL_DEFERREDdir. Eğer eskitür NULL değilse, önceki iptal durumu eskitür ile gösterilen yerde saklanır, böylece daha sonra pthread_setcanceltype işlevine yapılacak başka bir çağrıyla geri yüklenebilir.
Eğer tür argümanı PTHREAD_CANCEL_DEFERRED veya PTHREAD_CANCEL_ASYNCHRONOUS değilse, pthread_setcanceltype başarısız olur ve EINVAL döndürür. Aksi takdirde 0 döndürür.
void pthread_testcancel
(void)
işlev
pthread_testcancel bekleyen istekleri sınamak ve onları işletmekten başka birşey yapmaz. Amacı uzun kod yığını içerisinde iptal için açık kontroller ortaya koymaktır. Aksi takdirde bu kodlar iptal noktası işlevlerini çağırmazlar.
Önceki Üst Ana Başlık Sonraki
Evre Öznitelikleri Başlangıç Temizlik İşleyicileri
Bir Linux Kitaplığı Sayfası