pthread_create() 函数有什么用
时间: 2023-10-22 19:31:24 浏览: 93
pthread_create() 函数用于创建一个新的线程。它接受四个参数:
1. pthread_t *thread:传递一个 pthread_t 类型的指针变量,用于存储新创建的线程的标识符。
2. const pthread_attr_t *attr:传递一个线程属性对象的指针,可以设置线程的属性,一般传入NULL表示使用默认属性。
3. void *(*start_routine) (void *):传递一个指向函数的指针,该函数将作为新线程的起始例程,新线程会从该函数开始执行。
4. void *arg:传递给起始例程的参数。
通过调用pthread_create()函数,可以创建一个新的线程,让其执行指定的函数,并使用传递的参数。这样可以同时进行多个任务,提高程序的并发能力。
相关问题
pthread_create和pthread_join函数
pthread_create函数用于创建一个新的线程,它的原型为:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg);
其中,thread是指向线程标识符的指针,attr是指向线程属性的指针,start_routine是线程函数的指针,arg是传递给线程函数的参数。
pthread_join函数用于等待一个线程的结束,它的原型为:
int pthread_join(pthread_t thread, void **retval);
其中,thread是要等待的线程标识符,retval是指向线程返回值的指针。
这两个函数都是 POSIX 线程库中的函数,用于多线程编程。
pthread_create函数
`pthread_create` 函数是 POSIX 线程库中用于创建线程的函数,其原型如下:
```c
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
```
该函数的参数解释如下:
- `thread`:一个指向 pthread_t 类型变量的指针,用于存储创建的线程 ID。
- `attr`:一个指向 pthread_attr_t 类型变量的指针,用于指定创建线程的属性,可以为 `NULL`。
- `start_routine`:一个函数指针,指向线程的起始函数。
- `arg`:传递给线程起始函数的参数。
`pthread_create` 函数成功时返回 0,失败时返回一个非 0 值,具体错误码可以使用 `errno` 变量查看。创建成功后,新线程将立即开始执行指定的 `start_routine` 函数。
举个例子,以下代码创建了一个新的线程,该线程通过调用 `print_message()` 函数打印一条消息。注意,该代码使用了 `pthread_join` 函数等待新线程完成。
```c
#include <stdio.h>
#include <pthread.h>
void *print_message(void *message) {
printf("%s\n", (char *)message);
pthread_exit(NULL);
}
int main() {
pthread_t thread;
char *message = "Hello, world!";
int ret = pthread_create(&thread, NULL, print_message, (void *)message);
if (ret) {
printf("Failed to create thread: %d\n", ret);
return -1;
}
pthread_join(thread, NULL);
return 0;
}
```
阅读全文