编写一个C程序,使用 pthread_create() 函数创建一个或多个线程,定义线程函数,该函数将被新创建的线程执行,
时间: 2024-12-18 15:17:06 浏览: 3
linux创建线程之pthread_create的具体使用
5星 · 资源好评率100%
当然,下面是一个简单的示例,展示了如何使用`pthread_create()`函数创建一个线程并定义其函数:
```c
#include <stdio.h> // 输出函数
#include <stdlib.h> // 错误处理函数
#include <pthread.h> // 线程库
// 定义线程函数
void *print_numbers(void *arg) { // 参数是void*,因为我们并不关心这个值
int num = *((int*) arg); // 解引用参数获取整数值
for (int i = 0; i <= num; ++i) {
printf("Thread %d is printing %d\n", pthread_self(), i);
sleep(1); // 模拟工作过程,让主线程看到线程在运行
}
printf("Thread %d finished.\n", pthread_self());
return NULL;
}
int main() {
const int N_THREADS = 3; // 创建的线程数量
pthread_t threads[N_THREADS]; // 存储每个线程的ID
// 创建线程并指定线程函数
for (int i = 0; i < N_THREADS; ++i) {
int thread_num = i + 1; // 让每个线程打印从1到自身编号的数字
if (pthread_create(&threads[i], NULL, print_numbers, &thread_num) != 0) {
perror("Error creating thread");
return 1;
}
}
// 等待所有线程完成
for (int i = 0; i < N_THREADS; ++i) {
if (pthread_join(threads[i], NULL) != 0) {
perror("Error joining thread");
return 1;
}
}
printf("Main thread has completed.\n");
return 0;
}
```
在这个例子中,我们创建了三个线程,每个线程会打印从1到线程编号的数字,然后线程结束。`pthread_create()`函数创建了一个新的线程,`pthread_join()`用于等待线程执行完毕。
阅读全文