线程常用操作
1.分离线程
线程分为两种:分离线程和未分离线程,这两种方式标志着线程的终止方式,系统默认创建的是未分离线程,可以根据需要对其进行分离,在线程使用过程中,如果对线程的终止信息没有需求的话,通常使用分离线程,只有与线程终止同步操作时才使用非分离线程
int pthread_detach(pthread_t tid)
返回值为0表示调用成功,表示tid指明的线程不合防,ESRCH 表示该线程不是一个未分离的线程
对线程进行分离,实际上就是告诉系统的线程库,当指定的线程终止的时候可以回收它所占用的内存和其他的资源,而无需等待其他线程对其进行回收。
如果线程没有终止时,调用该函数将不会终止线程的执行,此外该函数不可以被多次使用。
2.等待线程结束
int pthread_join(pthread_t tid,void*status)
tid为等待结束的线程id号,且该线程必须是未分离线程
status为线程结束的返回状态码,若status不为NULL则线程返回状态值放在status指针所指向的内存中。
3.终止线程
线程终止有两种情况,一种是线程函数结束线程自动结束,另外一种是使用pthread_exit()函数终止当前线程。
int pthread_exit(void*status)
如果当前线程是分离的,那么status将会被忽略,当前线程资源立即回收;如果是未分离的,则等待其他线程使用pthread_join函数与之同步,再回收资源。
4.获取线程标识符
函数pthread_t pthread_self(void)
使用该函数可以获取当前线程的标识符,返回值即是。
5.比较线程标识符
比较线程标识符可以识别线程属性,进而确定对线程操作的内容,比较功能常常用来识别线程是否是同一个线程
int pthread_equal(pthread_t tid1,pthread_t tid2)
当tid1和tid2相同的时候返回非0值,否则返回0