Threads.h
- C kursu
- Uzman
- Ders 29/47
- 5 dk
threads.h ile standart iş parçacığı öğrenirsin.
threads.h iş parçacıkları
threads.h başlığı, C11 ile gelen standart iş parçacığı kütüphanesidir. thrd_create(&t, func, arg) ile yeni bir iş parçacığı başlatılır; thrd_join(t, &result) ile beklenir.
Bu başlık ayrıca mtx_t karşılıklı dışlama (mutex) tipini de sunar. mtx_lock(&m) ile kilitlenir, mtx_unlock(&m) ile bırakılır. POSIX pthread'ine benzer ama standart C'nin parçasıdır; bu yüzden taşınabilirdir. İş parçacığı fonksiyonu int (*)(void *) imzasına sahip olmalıdır; dönüş değeri thrd_join ile alınır.
İş parçacığı fonksiyonu
İş parçacığı fonksiyonu int thread_func(void *arg) imzasına sahip olmalıdır. arg parametresi, thrd_create'in üçüncü parametresiyle alınır; tipi void *'dir.
Fonksiyon bir int döndürür; bu değer thrd_join'in ikinci parametresi ile alınır. Başarı için thrd_success döndürmek gelenekseldir. arg kullanılmıyorsa (void)arg; ile kullanılmayan parametre uyarısı bastırılır. İş parçacığı fonksiyonu içinde printf çağrısı yapılabilir; çıktı sıralaması thrd_join ile garanti edilir.
Uygulama İş parçacığı başlat ve bekle
#include <threads.h> ekle. int thread_func(void *arg) yaz; (void)arg; ile uyarı bastır ve printf("İş parçacığı\n") yazdır, return 0;. int main(void) içinde thrd_t t; tanımla, thrd_create(&t, thread_func, NULL) ve thrd_join(t, NULL) çağır, sonra printf("Bitti\n") yazdır.
Başlangıç kodu
#include <stdio.h>
#include <threads.h>
// parçacık fonksiyonu yaz
// başlat ve bekle
// main'de "Bitti" yazdırÖrnek çözüm
#include <stdio.h>
#include <threads.h>
int thread_func(void *arg) {
(void)arg;
printf("İş parçacığı\n");
return 0;
}
int main(void) {
thrd_t t;
thrd_create(&t, thread_func, NULL);
thrd_join(t, NULL);
printf("Bitti\n");
return 0;
}Beklenen çıktı
İş parçacığı Bitti
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 threads.h işlevini eşle
| Kavram | Anlamı |
|---|---|
thrd_create |
Parçacık başlat |
thrd_join |
Parçacık bekle |
mtx_lock |
Kilitle |
mtx_unlock |
Kilidi bırak |
2 Hangi işlev yeni iş parçacığı başlatır?
- thrd_create Doğru cevap
- pthread_create
- thread_create
- _beginthread
Açıklama: thrd_create, threads.h başlığının parçacık başlatma işlevidir.
3 thrd_join çağrısını tamamla
thrd_create(&t, thread_func, NULL);
____(t, NULL);
thrd_create(&t, thread_func, NULL);
thrd_join(t, NULL);
Açıklama: thrd_join(t, NULL) iş parçacığının bitmesini bekler.