linux C传递参数到子线程,示例代码
时间: 2024-03-21 22:43:33 浏览: 54
在Linux C中,可以使用pthread_create函数创建子线程,并将参数传递给子线程。pthread_create函数的第四个参数是一个void指针类型,可以用来传递任意类型的参数。
下面是一个简单的示例代码,演示了如何传递参数到子线程:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *thread_func(void *arg) {
int n = *(int *)arg;
printf("Thread function: n = %d\n", n);
pthread_exit(NULL);
}
int main(int argc, char *argv[]) {
pthread_t tid;
int n = 123;
// 创建子线程,并将参数n传递给子线程
if (pthread_create(&tid, NULL, thread_func, &n) != 0) {
perror("pthread_create failed");
exit(EXIT_FAILURE);
}
// 等待子线程结束
pthread_join(tid, NULL);
return EXIT_SUCCESS;
}
```
在上面的示例中,主线程创建了一个整型变量n,并将它的地址传递给pthread_create函数的第四个参数。子线程函数thread_func接收到参数后,将它转换为整型变量,并打印出来。需要注意的是,在子线程中访问参数时,需要进行类型转换。
当需要传递多个参数时,可以将参数打包成一个结构体,然后将结构体的地址传递给pthread_create函数的第四个参数。
阅读全文