写出pthread_create函数和pthread_self()用法和程序的执行顺序
时间: 2023-11-21 14:55:54 浏览: 163
演示pthread用法
5星 · 资源好评率100%
pthread_create函数用于创建一个新的线程,其函数原型为:
```c
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是一个指向void类型的指针,用于传递给start_routine函数的参数。
pthread_self函数用于获取当前线程的ID,其函数原型为:
```c
pthread_t pthread_self(void);
```
下面是一个示例程序,演示了pthread_create函数和pthread_self函数的用法和程序的执行顺序:
```c
#include <stdio.h>
#include <pthread.h>
void *thread_func(void *arg) {
pthread_t tid = pthread_self();
printf("New thread created with ID %lu\n", tid);
return NULL;
}
int main() {
pthread_t tid;
printf("Main thread ID is %lu\n", pthread_self());
pthread_create(&tid, NULL, thread_func, NULL);
pthread_join(tid, NULL);
return 0;
}
```
程序首先输出了主线程的ID,然后调用pthread_create函数创建了一个新线程,并将其ID存储在tid变量中。pthread_create函数的第三个参数是一个指向函数的指针,该函数将作为新线程的入口点,这里我们传递了thread_func函数的地址。thread_func函数中调用了pthread_self函数获取当前线程的ID,并输出到控制台。最后,主线程调用pthread_join函数等待新线程结束。
阅读全文