虽然每个线程都有自己的存放错误码的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