在多线程编程中,`pthread_create`是创建新线程的核心函数之一。它允许主线程启动一个新的执行路径,从而实现并发操作。不过,当需要向线程函数传递参数时,事情变得稍微复杂一些。
首先,`pthread_create`函数的基本原型如下:
```c
int pthread_create(pthread_t thread, const pthread_attr_t attr,
void (start_routine)(void ), void arg);
```
其中,`start_routine`是线程函数指针,而`arg`用于传递参数。由于C语言中函数指针只能接收一个`void`类型的参数,因此我们需要通过指针间接传递数据。例如,可以定义一个结构体来封装多个参数,再将其地址传入线程函数。
举个例子:
```c
typedef struct {
int num;
char name[20];
} ThreadArgs;
void thread_func(void arg) {
ThreadArgs args = (ThreadArgs)arg;
printf("Number: %d, Name: %s\n", args->num, args->name);
return NULL;
}
int main() {
ThreadArgs args = {42, "Thread"};
pthread_t tid;
pthread_create(&tid, NULL, thread_func, &args);
pthread_join(tid, NULL);
return 0;
}
```
通过这种方式,我们可以灵活地向线程函数传递任意类型的数据。掌握了这一技巧后,您就可以轻松实现复杂的多线程功能了!💡
Linux 多线程 pthread