Linux线程学习(三):pthread常见线程函数

在任何一个时间点上,线程是可结合的(joinable)或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死。在被其他线程回收之前,它的存储器资源(例如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。

虽然每个线程都有自己的存放错误码的errno全局变量,但线程为了兼容其他接口,并未使用它。因此,要注意pthread返回的错误码。

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);创建线程。

参数:线程id,线程属性,回调函数,函数参数。

返回值:成功返回0,失败返回错误码。


pthread_t pthread_self();获取本线程id。

返回值:线程id。


void pthread_exit(void*retval);主动进行线程退出。

参数:自己设定退出后的返回值。


int pthread_join(pthread_t thread,void**retval);

目标:使已经结束的线程分离(detached)。

参数:回收线程的id,获取线程退出的返回值(可设置NULL不获取)。

返回值:成功返回0,失败返回错误码(目标detach则EINVAL(Invalid argument))。

注:

retval指针的指向:线程return,则获得线程中函数的返回值;

线程被别的线程调用pthread_cancel()异常终止,则获得PTHREAD_CANCELED;

线程调用pthread_exit(void *retval)主动退出,则获得retval;


int pthread_detach(pthread_t tid);

目标:使目标线程变为detached,包括已结束但未分离的线程。

参数:目标线程id。

返回值:成功返回0,失败返回错误码。

int pthread_equal(pthread_t t1,pthread_tt2);

目标:判断两个线程地址是否相等。

参数:两个线程id。

返回值:线程id相等,返回0;不相等,返回非0。返回值一定要注意,相等时才返回0。设置该函数意义:不同平台线程id的类型不同。

转载请注明出处:https://blog.csdn.net/qq_39937902/article/details/79523762




猜你喜欢

转载自blog.csdn.net/qq_39937902/article/details/79523762