1. 什么是线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
2. 线程和进程的关系
- 轻量级进程(light-weight process),也有PCB,创建线程使用的底层函数和进程一 样,都是clone;
- 从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表是相同的;
- 进程可以蜕变成线程;
- 在美国人眼里,线程就是寄存器和栈;
- 在linux下,线程最是小的执行单位;进程是最小的分配资源单位查看LWP号。
ps -Lf pid
ps -eLf
![[Android C++系列:Linux线程(一)概念.png]]
3. 线程间共享资源
- 文件描述符表;
- 每种信号的处理方式;
- 当前工作目录;
- 用户ID和组ID;
- 内存地址空间
Text
data
bss
堆
共享库
4. 线程间非贡献资源
- 线程id;
- 处理器现场和栈指针(内核栈);
- 独立的栈空间(用户空间栈);
- errno变量;
- 信号屏蔽字;
- 调度优先级
5. 线程优缺点
优点:
- 提高程序的并发性;
- 开销小,不用重新分配内存;
- 通信和共享数据方便
缺点:
- 线程不稳定(库函数实现);
- 线程调试比较困难(gdb支持不好);
- 线程无法使用unix经典事件,例如信号
6. pthread manpage
查看manpage关于pthread的函数
man -k pthread
Ubuntu可以通过以下命令安装man命令:sudo apt-get install manpages-posix manpages-posix-dev
7. 总结
本文介绍了线程概念,线程和进程间关系,线程间共享资源和非共享资源,线程优缺点以及man工具的安装和使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。