最新动态

常见问题

浅谈线程创建和退出

2021/4/20 16:04:53 阅读次数: 标签:线程,线程创建,线程退出

一般来说,大佬们对系统调用接口进行封装,实现了上层用户态的线程控制接口。

我们操作线程的接口都是库函数,需要引入头文件<pthread.h>,链接这些线程函数库时要使用编译器命令的"-lpthread"选项。


(一)创建线程

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

返回值:成功返回0;失败返回非0;

thread:用于获取线程ID;

attr:设置线程属性,设置为NULL,表示默认属性;

start_routine:线程的入口函数;

arg:通过线程入口函数给线程传递的参数;


(二)线程终止

线程入口函数中执行return(线程入口函数运行完毕,线程退出,);

调用pthread_exit终止自己;

调用pthread_cancel终止同一进程中的另一个线程;

 void pthread_exit(void *retval);

 //retcal:返回值

 //可以在任意位置,哪个线程调用哪个线程退出;

1.jpg

int pthread_cancel(pthread_t thread);//被动退出

 //thread:一个指定的线程ID

 //传入谁的ID谁退出;

//返回值:成功返回0,失败返回非0;

主线程退出并不会导致进程退出,只有所有线程退出了进程才会退出。


代码实现

2.jpg