9.25. threads.h
: İş Parçacıkları
Bu dosya önce time.h
başlık dosyasını içerir,
sonra da çoklu iş parçacıklarının yürütülmesine destek veren bazı
değişmez, tip, fonksiyon ve makrolar tanımlar. Eğer derleyici tarafından
__STDC_NO_THREADS__
makrosu tanımlanmışsa, o zaman o ortam
tarafından bu dosyanın ve dolayısı ile çoklu iş parçacığı
desteğinin sağlanmasına gerek kalmaz.
Bu dosyada tanımlanan makrolar şunlardır:
thread_local | _Thread_local ile eşanlamlı |
ONCE_FLAG_INIT | once_flag tipindeki bir nesneyi
ilklemek için kullanılan bir değer |
TSS_DTOR_ITERATIONS | bir iş parçacığı sonlanırken yıkıcıların en fazla kaç kez çağrılacağını gösteren değişmez bir tamsayı ifadesi |
Tipler şunlardır:
cnd_t | bir koşul değişkeni için bir tanımlayıcı tutan bir nesne tipi |
thrd_t | bir iş parçacığı için bir tanımlayıcı tutan bir nesne tipi |
tss_t | iş parçacığına özgü bir alan göstergesi için bir tanımlayıcı tutan bir nesne tipi |
mtx_t | bir muteks (zaman uyumu sağlayıcı) için bir tanımlayıcı tutan bir nesne tipi |
tss_dtor_t | iş parçacığına özgü bir alan göstergesi için bir yıkıcı olarak kullanılan ve
tss_create fonksiyonuna argüman olarak geçirilen
void (*)(void *) tipindeki fonksiyon göstergesi |
thrd_start_t | yeni bir iş parçacığı oluşturmak için thrd_create fonksiyonuna
argüman olarak geçirilen
int (*)(void *) tipindeki fonksiyon göstergesi |
once_flag | call_once fonksiyonu için bir bayrak tutan bir nesne tipi |
Sayım tipi değişmezleri şunlardır:
mtx_plain | zaman aşımını desteklemeyen bir muteks nesnesi oluşturmak için
mtx_init ’e geçirilir |
mtx_recursive | özçağrılı kilitlemeyi destekleyen bir muteks nesnesi oluşturmak için
mtx_init ’e geçirilir |
mtx_timed | zaman aşımını destekleyen bir muteks nesnesi oluşturmak için
mtx_init ’e geçirilir |
thrd_timedout | talep edilen kaynak elde edilmeden, çağrıda belirtilen zaman aşımına ulaşıldığını belirtmek için bir zamanlı bekleme fonksiyonu tarafından döndürülür |
thrd_success | istenen işlemin başarılı olduğunu belirtmek için bir fonksiyon tarafından döndürülür |
thrd_busy | bir test ve dönüş fonksiyonu tarafından talep edilen bir kaynağın, zaten kullanımda olması yüzünden, istenen işlemin başarısız olduğunu belirtmek için bir fonksiyon tarafından döndürülür |
thrd_error | istenen işlemin başarısız olduğunu belirtmek için bir fonksiyon tarafından döndürülür |
thrd_nomem | bellek ayrılamadığı için istenen işlemin başarısız olduğunu belirtmek için bir fonksiyon tarafından döndürülür |
Bu dosyada bildirimi yapılan fonksiyon prototipleri aşağıda beş grupta listelenmiştir.
İlkleme
void call_once(once_flag * byrk, void (* fonk)(void))
Koşul Değişkeni
int cnd_broadcast(cnd_t * kosul) void cnd_destroy(cnd_t * kosul) int cnd_init(cnd_t * kosul) int cnd_signal(cnd_t * kosul) int cnd_timedwait(cnd_t * restrict kosul, mtx_t * restrict mtks, const struct timespec * restrict zaman) int cnd_wait(cnd_t * kosul, mtx_t * mtks)
Muteks
void mtx_destroy(mtx_t * mtks) int mtx_init(mtx_t * mtks, int tip) int mtx_lock(mtx_t * mtks) int mtx_timedlock(mtx_t * restrict mtks, const struct timespec * restrict zaman) int mtx_trylock(mtx_t * mtks) int mtx_unlock(mtx_t * mtks)
İş Parçacığı
int thrd_create(thrd_t * isp, thrd_start_t fonk, void * arg) thrd_t thrd_current(void); int thrd_detach(thrd_t isp) int thrd_equal(thrd_t isp0, thrd_t isp1) _Noreturn void thrd_exit(int skodu) int thrd_join(thrd_t isp, int * skodu) int thrd_sleep(const struct timespec * sure, struct timespec * kalan) void thrd_yield(void)
İş Parçacığına Uygun Depolama
int tss_create(tss_t * anhtr, tss_dtor_t yikici) void tss_delete(tss_t anhtr) void * tss_get(tss_t anhtr) int tss_set(tss_t anhtr, void * deger)