Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

POSIX Threads (Pthreads) ใน C

Pthreads เป็นมาตรฐาน IEEE 1003.1c สำหรับการสร้างและซิงโครไนซ์เธรดในระบบ UNIX/Linux/macOS ใช้ API แบบ C

โครงสร้างหลัก

  • pthread_create() สร้างเธรดใหม่
  • pthread_join() รอเธรดจบการทำงาน
  • pthread_exit() ออกจากเธรด
  • ข้อมูลร่วมกัน (global) แชร์ระหว่างเธรด

ตัวอย่าง: คำนวณผลรวม 1 ถึง N ในเธรดแยก

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

int sum = 0;
void *runner(void *param) {
    int upper = atoi((char*)param);
    for (int i = 1; i <= upper; i++) sum += i;
    pthread_exit(0);
}

int main(int argc, char *argv[]) {
    if (argc != 2) { fprintf(stderr, "usage: %s \n", argv[0]); return -1; }
    if (atoi(argv[1]) < 0) { fprintf(stderr, "Must be >= 0\n"); return -1; }

    pthread_t tid; pthread_attr_t attr;
    pthread_attr_init(&attr);
    pthread_create(&tid, &attr, runner, argv[1]);
    pthread_join(tid, NULL);
    printf("Sum = %d\n", sum);
    return 0;
}

คอมไพล์

gcc -pthread program.c -o program

รัน

./program 10 → Sum = 55