线程创建
创建函数 两个线程有各自的栈
线程入口参数传递:
- 线程入口函数参数不能传递临时变量
- 传递堆上的空间,在线程不使用时由线程释放
- 线程入口函数参数不仅可以传递内置类型,也可以传递自定义类型
如何在一个进程疯狂使用CPU,但里面包含多个线程,如何分析是哪个线程所导致?
- top -H -p +进程号,使用该命令可以查看到其底下所有线程的资源信息
- 再用pstack +进程号找到具体线程的地址
线程终止
- 线程入口函数的return返回,当前线程就退出
- 线程调用pthread_exit函数,谁调用谁退出
- 线程调用pthread_cancel函数,退出指定线程,
线程入口函数的return返回
调用pthread_exit函数:
调用pthread_cancel函数
线程等待
线程创建的默认属性:
- 用pthread_creat在创建线程时,线程的属性默认是joinable属性,该属性导致线程在退出的时候依赖别人回收资源,当用三种函数退出线程时,线程的资源未被回收;
- 需要用线程等待解决
线程等待函数
pthread_join函数
代码及运行结果
线程分离
线程分离属性:一个线程被设置成分离属性后,则该线程在退出后,不需要其它执行流回收该线程资源,而是由操作系统回收
所用函数
代码
|