C – Multi Threads(Çoklu İş Parçacığı)


C programlama dili, birden fazla işlemi aynı anda yürütmek için çoklu iş parçacığı (multi-threading) desteği sunar. Multi-threading, programın verimliliğini artırabilir ve aynı anda birden fazla işlemi gerçekleştirebilir.

Aşağıdaki C kodu multi-thread kullanarak bir metin dosyasının satır sayısını hesaplar:

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

#define NUM_THREADS 4

void *count_lines(void *filename) {
    char *file = (char *)filename;
    FILE *fp = fopen(file, "r");
    if (fp == NULL) {
        printf("Error opening file.\n");
        pthread_exit(NULL);
    }

    int count = 0;
    char c;
    while ((c = fgetc(fp)) != EOF) {
        if (c == '\n') {
            count++;
        }
    }

    printf("%s: %d lines\n", file, count);

    fclose(fp);
    pthread_exit(NULL);
}

int main(int argc, char *argv[]) {
    pthread_t threads[NUM_THREADS];
    int i;

    if (argc < 2) {
        printf("Usage: %s file1 file2 file3 ...\n", argv[0]);
        exit(1);
    }

    for (i = 0; i < argc - 1 && i < NUM_THREADS; i++) {
        pthread_create(&threads[i], NULL, count_lines, (void *)argv[i+1]);
    }

    for (i = 0; i < NUM_THREADS; i++) {
        pthread_join(threads[i], NULL);
    }

    return 0;
}

Bu programda, count_lines() fonksiyonu, bir dosyadaki satır sayısını hesaplar. main() fonksiyonu, her bir dosya için bir iş parçacığı oluşturur ve pthread_create() fonksiyonu ile bu iş parçacıklarını başlatır. Daha sonra, pthread_join() fonksiyonu ile tüm iş parçacıklarının tamamlanmasını bekler ve sonuçları ekrana yazdırır.

Not: Bu sadece bir örnektir ve çoklu iş parçacığı programlama için daha gelişmiş teknikler de mevcuttur.

Bir yorum yazın

Yorumlar