进程 vs 线程
- 进程在切换时系统开销大
- 很多操作系统引入了轻量级进程LWP
- 同一进程中的线程共享相同地址空间
- Linux不区分进程、线程(都会创建:task_strcut)
线程特点:
通常线程指的是共享相同的地址空间的多个任务,使用多线程的好处
- 大大提高了任务切换的效率
- 避免了额外的TLB & cache的刷新
一个进程中的多个线程共享以下资源
- 可执行的指令
- 静态数据
- 进程中打开的文件描述符
- 当前工作目录
- 用户ID
- 用户组ID
每个线程私有的资源包括
- 线程ID(TID)
- PC(程序计数器)和相关寄存器
- 堆栈
- 错误号(errno)
- 优先级
- 执行状态和属性
Linux线程库
pthread线程库中提供了如下基本操作:
- 创建线程
- 回收线程
- 结束线程
同步和互斥机制
- 信号量
- 互斥量
线程创建-pthread_create
#include <pthread.h>
int pthread_create(pthread_t