目录
一、pthread_exit()的函数介绍
#include <pthread.h>
void pthread_exit(void *retval);
-功能:终止一个线程,在哪个线程中调用,就表示终止哪个线程。
-参数:
retval:需要传递一个指针,作为一个返回值,可以在pthread_join()。
二、pthread_self()函数的介绍
pthread_t pthread_self(void);
-功能:获取当前的线程ID;
三、pthread_equal()函数的介绍
int pthread_equal(pthread_t t1,pthread_t t2);
-功能:比较两个线程的ID 是否相等。
不同的操作系统,pthread_t类型的实现是不一样的,有的是无符号的长整型,有的是用结构体去实现的。
四、函数功能的简单应用
#include <stdio.h>
#include <string.h>
#include <pthread.h>
void *callback(void *arg)//次线程
{
printf("child pthread:%ld\n",pthread_self());
return NULL;
}
int main()
{
//创建子线程
pthread_t tid;
int ret=pthread_create(&tid,NULL,callback,NULL);
if(ret!=0)
{
printf("strerror=%s\n",strerror(ret));
}
//主线程
for(int i=0;i<5;i++)
{
printf("main pthread:%d",i+1);
}
printf("child pthread:%ld,main pthread:%ld\n",tid,pthread_self());
//让主线程退出,当主线程退出时不会影响其他线程的正常运转
pthread_exit(NULL);
return 0;
}
其运行结果为:
tid是子线程的ID,main pthread是主线程的ID。通过观察我们发现,在主线程查看的子线程ID和次线程里面的ID是一样的,着说明次线程就是主线程的子线程。
如有不足,欢迎批评指正!