CodeBlanks Logo Icon CodeBlanks

pthread_create

  • C kursu
  • İleri seviye
  • Ders 19/83
  • 5 dk

pthread_create ile iş parçacığı oluşturmayı öğrenirsin.

pthread_create

pthread_create, yeni bir iş parçacığı oluşturur. Dört parametre alır: iş parçacığı kimliği, öznitelikler, başlangıç işlevi ve işleve geçirilecek argüman.

İşlev imzası void *(*start)(void *) olmalıdır; yani void * alıp void * döndürür. Örneğin pthread_create(&tid, NULL, worker, &value), worker işlevini yeni iş parçacığında çalıştırır. NULL öznitelikler varsayılan ayarları kullanır. İş parçacığı oluşturulur oluşturulmaz çalışmaya başlar.

İş parçacığı yaşam döngüsü

Bir iş parçacığı oluşturulduğunda çalışmaya başlar ve işlevi dönene kadar yaşar. İşlev döndüğünde iş parçacığı biter.

Bitişini beklemek için pthread_join(tid, NULL) kullanırsın. Bu, iş parçacığı dönene kadar bekler ve kaynakları serbest bırakır. Her oluşturulan iş parçacığı için join çağırmak iyi bir alışkanlıktır; ayrıntısını sonraki derste göreceksin. İş parçacığı, ebeveyn iş parçacığıyla aynı belleği paylaşır.

Uygulama İş parçacığı oluştur ve bekle

void *worker(void *arg) yaz; içinde int *value = (int *)arg; *value = 42;. int value = 0; ile değişken tanımla. pthread_create(&tid, NULL, worker, &value); ve pthread_join(tid, NULL);. printf("değer=%d\n", value); ile yazdır.

Başlangıç kodu

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

// worker işlevini yaz
// pthread_create ile oluştur
// pthread_join ile bekle ve yazdır

int main(void) {
    return 0;
}

Örnek çözüm

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

void *worker(void *arg) {
    int *value = (int *)arg;
    *value = 42;
    return NULL;
}

int main(void) {
    pthread_t tid;
    int value = 0;
    pthread_create(&tid, NULL, worker, &value);
    pthread_join(tid, NULL);
    printf("değer=%d\n", value);
    return 0;
}

Beklenen çıktı

değer=42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 pthread_create'in üçüncü parametresi nedir?

  • Öznitelikler
  • İş parçacığı kimliği
  • Başlangıç işlevi Doğru cevap
  • Dönüş değeri

Açıklama: Üçüncü parametre başlangıç işlevidir.

2 İş parçacığı oluşturma

Soru
pthread_create(&tid, NULL, ____, &value);
Cevap
pthread_create(&tid, NULL, worker, &value);

Açıklama: worker işlevi yeni iş parçacığında çalışır.

3 pthread_create parçalarını eşle

Kavram Anlamı
pthread_create İş parçacığı başlatır
pthread_join Bitmesini bekler
NULL Varsayılan öznitelik
void * Argüman ve dönüş türü

İleri seviye bölümündeki tüm dersler