pthread_create传递参数
时间: 2024-04-27 21:17:08 浏览: 138
pthread_create传递参数(线程函数传递参数示例)
5星 · 资源好评率100%
pthread_create函数是用于创建一个新的线程的函数,它的原型如下:
```c
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
```
其中,最后一个参数arg就是用来传递给新线程的参数。arg可以是任意类型的指针,通过它可以将需要传递给新线程的数据传递过去。
在新线程的入口函数start_routine中,可以通过强制类型转换将arg转换为需要的类型,然后使用该参数进行相应的操作。
下面是一个简单的示例代码,演示了如何使用pthread_create传递参数:
```c
#include <stdio.h>
#include <pthread.h>
// 新线程的入口函数
void* thread_func(void* arg) {
int num = *(int*)arg; // 将参数arg转换为int类型指针,并取值
printf("Received parameter: %d\n", num);
// 在这里可以进行相应的操作
// ...
pthread_exit(NULL);
}
int main() {
pthread_t tid;
int param = 123; // 需要传递给新线程的参数
// 创建新线程,并传递参数
if (pthread_create(&tid, NULL, thread_func, ¶m) != 0) {
printf("Failed to create thread.\n");
return 1;
}
// 等待新线程结束
if (pthread_join(tid, NULL) != 0) {
printf("Failed to join thread.\n");
return 1;
}
return 0;
}
```
在上述示例中,我们创建了一个新线程,并将参数param传递给新线程。新线程的入口函数thread_func将参数转换为int类型,并打印出来。你可以根据实际需求修改入口函数和参数的类型。
阅读全文