CodeBlanks Logo Icon CodeBlanks

Threads.h

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

main.c
#include <stdio.h>
#include <threads.h>

// parçacık fonksiyonu yaz
// başlat ve bekle
// main'de "Bitti" yazdır

Örnek çözüm

main.c
#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

Soru
thrd_create(&t, thread_func, NULL);
____(t, NULL);
Cevap
thrd_create(&t, thread_func, NULL);
thrd_join(t, NULL);

Açıklama: thrd_join(t, NULL) iş parçacığının bitmesini bekler.

Uzman bölümündeki tüm dersler