pthread_create函数详细用法
时间: 2023-12-29 18:26:25 浏览: 105
createthread函数用法详解
pthread_create函数是用于创建一个新线程的函数。它的函数原型如下:
```c
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
```
该函数的参数解释如下:
- `thread`:传出参数,保存系统为我们分配好的线程ID。
- `attr`:通常传NULL,表示使用线程默认属性。若想使用具体属性也可以修改该参数。
- `start_routine`:函数指针,指向线程主函数(线程体),该函数运行结束,则线程结束,即创建线程的回调函数。
- `arg`:线程主函数执行期间所使用的参数。
该函数的返回值为:
- 成功:0
- 失败:错误号,可通过strerror函数打印错误信息。
下面是一个使用pthread_create函数创建新线程的示例:
```c
#include <stdio.h>
#include <pthread.h>
void* thread_func(void* arg) {
int* num = (int*)arg;
printf("Thread function: %d\n", *num);
pthread_exit(NULL);
}
int main() {
pthread_t thread;
int num = 10;
int ret = pthread_create(&thread, NULL, thread_func, &num);
if (ret != 0) {
printf("Failed to create thread: %s\n", strerror(ret));
return 1;
}
printf("Main thread\n");
pthread_join(thread, NULL);
return 0;
}
```
该示例中,我们定义了一个线程函数`thread_func`,它接收一个整数参数,并在函数内部打印该参数的值。在主函数中,我们使用pthread_create函数创建了一个新线程,并将参数传递给线程函数。然后,主线程打印了一条消息,并使用pthread_join函数等待新线程执行完毕。
阅读全文