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.
Yorumlar
Yorum Yapın