pthread_create 如何使用?
时间: 2024-03-29 11:32:12 浏览: 67
Linux进程控制——线程创建pthread_create()
5星 · 资源好评率100%
pthread_create函数是POSIX线程库中的一个函数,用于创建一个新的线程。它的函数原型如下:
```c
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
```
参数说明:
- `thread`:指向pthread_t类型的指针,用于存储新创建线程的标识符。
- `attr`:指向pthread_attr_t类型的指针,用于设置新线程的属性,通常可以传入NULL,表示使用默认属性。
- `start_routine`:指向线程函数的指针,新线程将从该函数开始执行。
- `arg`:传递给线程函数的参数。
使用pthread_create函数创建线程的步骤如下:
1. 定义一个pthread_t类型的变量,用于存储新线程的标识符。
2. 可选:定义一个pthread_attr_t类型的变量,用于设置新线程的属性。
3. 定义一个线程函数,该函数的返回类型为void*,参数为void*。
4. 调用pthread_create函数,传入上述定义的变量和函数指针作为参数。
以下是一个示例代码:
```c
#include <pthread.h>
#include <stdio.h>
void* thread_func(void* arg) {
int thread_id = *(int*)arg;
printf("This is thread %d\n", thread_id);
pthread_exit(NULL);
}
int main() {
pthread_t thread;
int thread_id = 1;
int ret = pthread_create(&thread, NULL, thread_func, &thread_id);
if (ret != 0) {
printf("Failed to create thread\n");
return 1;
}
pthread_join(thread, NULL);
return 0;
}
```
在上述示例中,我们定义了一个线程函数`thread_func`,该函数接收一个整数参数作为线程ID,并打印出线程ID。在主函数中,我们创建了一个新线程,并将线程ID作为参数传递给线程函数。最后,我们使用pthread_join函数等待新线程的结束。
阅读全文