线程
每一个进程的地址空间是相互独立的
每一个进程都有一个task_struct任务结构体
在进行进程的切换时,需要不断刷新cache缓存,比较消耗资源;
为了减少cache刷新时的资源消耗,引入了轻量级进程 – 线程。
线程特点:
- 同一个进程创建的多个线程,共用同一个进程的地址空间;
- 进程创建线程后,我们把原本进程也称为线程,称为 主线程;
进程被称为最小的资源分配单位
线程称为CPU最小任务调度单位
线程公共数据:
- 用户名、用户组名
- 静态数据、全局数据
- 文件描述符
- 线程私有数据
线程私有数据:
- 线程ID
- PC
- 优先级、状态、属性
- 堆栈
1.线程相关接口函数
pthread_create() 创建进程
pthread_exit 结束进程
pthread_join 等待进程
在编译跟线程操作相关的程序时,需要链接线程库 线程库库名pthread
1)创建线程
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
返回值:
成功返回 0,失败返回错误号
参数:
thread: 线程对象
attr: 线程属性,填NULL表示使用默认属性
start_routine: 线程处理函数
arg: 给线程处理函数start_routine传参,
若线程处理函数没有参数ÿ