1线程概念
1.1什么是线程
1.1.2线程和进程的关系
1.轻量级进程(light-weightprocess),也有PCB,创建线程使用底层函数和进程一样,都是clone.
2.从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表示相同的
3.进程可以蜕变成线程
4.在美国人眼里,线程就是寄存器和栈
5.在Linux下,线程是最小的执行单位;进程是最小的分配资源的单位
查看LWP号(通过这个命令可以查看到线程号),命令是:
ps –eLf (其中,下面的LWP列表示的就是线程号)
ps –Lf pid(通过这种方式查看某个进程下的具体线程信息)
调度图
调度单位为线程
1.1.3.线程间可共享的资源
1.文件描述符表
2每种信号的处理方式
3当前工作目录
4用户ID和组ID
5内存地址空间
以下同样是共享的:
text 代码区
data 数据区
bss
堆
共享库 (调用共享库可以用mmap)
线程间共享资源
1.1.4线程间非共享资源
1.线程id
2.处理器现场和栈指针
3.独立的栈空间
4.errno变量
5.信号屏蔽字
6.调度优先级
线程优缺点
优点
提高程序的并发性
开销小,不用重新分配内存
通信和共享数据方便
缺点
线程不稳定(库函数实现不稳定)
线程调试比较困难(gdb支持不好)
线程无法使用unix经典事件,例如信号
pthread manpage
man –k pthread
安装pthread相关manpage
sudoapt-get install manpages-posix manpages-posix-dev