Thread Oluşturma

Yeni bir thread oluşturmak için pthread_create fonksiyonu kullanılır.

Thread fonksiyonlarının kullanımı için pthread.h başlık dosyası include edilmelidir.

Threadler ana program ile aynı adresleme alanını ve aynı file descriptor'ları kullanırlar.

Pthread kütüphanesi aynı zamanda senkronizasyon işlemleri için gerekli mutex ve conditional işlemleri için gerekli desteği de içermektedir.

Pthread kütüphanesi fonksiyonları kullanıldığında uygulama pthread kütüphanesi ile de linklenmelidir:

$ gcc -o example example_thread.c -lpthread
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg)

Başarılı durumda 0 döner. Hata durumunda ise geriye bir hata kodu dönecektir.

thread parametresi pthread_t türünde olup önceden tanımlanması gerekir. Oluşan thread'e bu referansla her zaman erişilebilecektir.

attr parametresi thread spesifik olarak pthread_attr_ ile başlayan fonksiyonlarla ayarlanmış, scheduling policy, stack büyüklüğü, detach policy gibi kuralları gösterir.

start_routine thread tarafından çalıştırılacak olan fonksiyonu gösterir.

arg ise thread tarafından çalıştırılacak fonksiyona geçirilecek void*'a cast edilmiş genel bir veri yapısını göstermektedir.

Örnek Uygulama

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>

void *worker(void *data)
{
    char *name = (char*)data;
    for (int i=0; i<120; i++) {
        usleep(50000);
        printf("Hello from thread %s\n", name);
    }
    printf("Thread %s done...\n", name);
    return NULL;
}

int main(void) {
    pthread_t th1, th2;
    pthread_create(&th1, NULL, worker, "A");
    pthread_create(&th2, NULL, worker, "B");
    sleep(5);
    printf("Exiting from main program\n");
    return 0;
}

results matching ""

    No results matching ""