一、线程基础
进程:有独立的进程地址空间,有独立的pcb
线程:有独立的pcb,没有独立的进程地址空间
因此进程线程最本质的区别就是:是否共享地址空间
在Linux下线程是最小的执行单位;进程是最小的分配资源单位,可看成只有一个线程的进程
看进程下的线程号:ps -Lf 进程ID
LWP—>CPU执行的最小单位
线程共享和非共享
gdb不支持线程,线程对信号支持也不太好
但线程可以提高程序并发性,且开销小,数据通信共享数据都方便
二、创建线程
线程控制原语
两个概念:
线程ID和线程号(LWP)
线程ID是在进程中用来表示线程身份的;线程号LWP是标识线程身份给cpu用的,用来划分时间轮线,决定每个程序的执行时间
1,pthread_create 创建一个新线程
第一个参数:传出新创建线程的传出ID;
第二个参数:描述线程的属性:通过调整线程属性可以调整线程各种状态,比如说线程分离,线程优先级,线程所占空间大小等,但是要是没有特殊要求就可以只传一个NULL空值;
第三个参数:一个回调参数
第四个参数:泛型指针,就是第三个参数所需要的参数,不需要参数就传入NULL
成功返回0,失败返回错误号
2,pthread_self 获取线程ID
pthread_t pthread_self(void);
注意线程ID是pthread_t类型的,且线程ID是进程内部的识别标识,两个进程间的线程ID是允许相同的
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200504173411599.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3Mjk5NTk2,size_16,color_FFFFFF,t_70)
例子
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)