![](https://csdnimg.cn/release/download_crawler_static/9632127/bg1.jpg)
542718520@qq.com
1 / 3
Linux pthread 相关函数用法说明
1、pthread_create
函数原型:
int pthread_create( pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void), void *restrict arg );
函数功能:
用于创建一个线程,默认情况下该线程是非分离属性,即 join 属性。
参数说明:
1、pthread_t *restrict tidp:由 tidp 指向的内存单元被设置为新创建线程的线程 ID,即线程句柄;
2、const pthread_attr_t *restrict attr:用来设置线程属性,需要先用 pthread_attr_init 初始化线程属性,也可
以用 NULL,表示使用默认的属性,此时不需要调用 pthread_attr_init 函数;
3、void *(*start_rtn)(void):是一个函数指针,即线程运行函数的起始地址。新创建的线程从 start_rtn 函数的地址
开始运行,该函数只有一个万能指针参数 arg,如果需要向 start_rtn 函数传递的参数不止一个,那么需要把这些参数放到一个
结构体中,然后把这个结构体的地址作为 arg 的参数传入;
4、void *restrict arg:是运行函数的参数,NULL 表示该运行函数无参数;
返回值:
成功:则返回 0;
失败:返回出错编号;
注意事项:
1、void *(*start_rtn)(void)的函数参数必须和 void *restrict arg 保持一致,否则会出现的错误的情况!
2、使用该函数后要么调用 pthread_join 表示该线程是非分离的,要么调用 pthread_detac 表示该线程是分离的。
2、pthread_attr_init
函数原型:
int pthread_attr_init(pthread_attr_t *attr);
函数功能:
用于初始化一个线程对象的属性,在线程退出时需要对应调用 pthread_attr_destroy 函数对其去除初始化。
参数说明:
指向一个线程属性结构的指针,结构中的元素分别对应着新线程的运行属性。属性对象主要包括是否绑定、是否分离、堆
栈地址和大小、优先级等。默认属性为非绑定、非分离、默认使用系统堆栈大小、与父进程有相同优先级。
返回值:
成功:0
失败:返回一个错误代码。
注意事项:
需要对应调用 pthread_attr_destroy 函数对其去除初始化。
3、pthread_join(非分离状态,阻塞)
函数原型:
int pthread_join(pthread_t thread, void **retval);
函数功能:
用于使一个线程等待另一个线程结束,线程间同步的操作,使主线程阻塞等待其他线程退出,即非分离属性。