通过POSIX线程(pthread)库,用C语言写一个简单的并行编程的代码例子
时间: 2024-09-24 14:05:25 浏览: 39
C语言多线程编程教程 POSIX线程库
在C语言中,使用POSIX线程(pthread)库可以轻松实现多线程编程。下面是一个简单的例子,展示了如何创建两个线程同时打印数字:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
// 线程函数原型
void* print_numbers(void* arg);
int main() {
pthread_t thread1, thread2; // 创建线程的变量
int num1 = 0, num2 = 10; // 每个线程要处理的数据
// 创建第一个线程,参数为NULL,因为这里直接传递地址
if (pthread_create(&thread1, NULL, print_numbers, &num1)) {
perror("Error creating thread 1");
return 1;
}
// 创建第二个线程,同样传递数据的地址
if (pthread_create(&thread2, NULL, print_numbers, &num2)) {
perror("Error creating thread 2");
return 1;
}
// 等待两个线程完成
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
printf("Both threads finished.\n");
return 0;
}
// 线程函数,接收一个整数参数并打印它
void* print_numbers(void* data) {
int number = *(int*)data;
for (int i = 0; i <= number; i++) {
printf("Thread %d printing: %d\n", pthread_self(), i);
sleep(1); // 引入延时以模拟工作时间
}
pthread_exit(NULL); // 结束线程,并返回
}
```
在这个例子中,`print_numbers` 函数作为线程任务,在主线程中创建了两个线程,分别处理不同的数字范围。每个线程独立运行,互不影响。
阅读全文