如果线程执行的函数有输入参数该怎么修改
时间: 2024-03-25 20:39:06 浏览: 48
易语言多线程及线程参数传递案例.zip
如果线程执行的函数有输入参数,可以将参数传递给 `pthread_create` 函数的第四个参数。例如,我们可以将一个数字作为参数传递给线程执行的函数,示例代码如下:
```c
#include <pthread.h>
#include <stdio.h>
void *thread_func(void *arg) {
int num = *(int *)arg;
printf("Hello, I am a new thread, and the input number is %d.\n", num);
return NULL;
}
int main() {
pthread_t tid;
int num = 123;
int ret = pthread_create(&tid, NULL, thread_func, &num);
if (ret != 0) {
printf("pthread_create error: %d\n", ret);
return -1;
}
printf("Main thread.\n");
pthread_join(tid, NULL);
return 0;
}
```
在这个示例代码中,我们将一个整数 `num` 作为线程执行函数的输入参数。在 `main` 函数中,我们定义了 `num` 变量,并将其地址作为第四个参数传递给 `pthread_create` 函数。在线程执行函数 `thread_func` 中,我们通过 `*(int *)arg` 的方式获取了 `num` 的值。
需要注意的是,在 `pthread_create` 函数中传递参数时,需要将参数的地址转换为 `void *` 类型。在线程执行函数中获取参数时,需要根据参数的实际类型进行类型转换。
阅读全文