Linux 进程与线程:环境变量、进程调度与线程基础
·
7. 线程基础
7.1 什么是线程
线程是一个轻量的进程,是一个任务创建、调度、消亡的过程。线程是操作系统任务调度的最小单元。
7.2 进程和线程的区别
- 进程是操作系统资源分配的最小单元,进程独占 0-4G 虚拟内存空间,可以划分为文本段、数据段、系统数据段,每个进程独享以上区域
- 线程位于进程空间内部,线程只有独立的栈空间,其余的堆区、数据区、文本区与进程内其余线程共享
- 线程是操作系统任务调度的最小单元
7.3 线程创建
每个线程拥有属于自己的栈空间(默认为 8M),其余空间与进程内其余线程共享。局部变量独享,全局变量、静态变量、字符串常量、堆区都是共享的。
7.4 线程调度与消亡
线程调度与进程调度保持一致,宏观并行,微观串行。线程结束必须回收线程空间,否则会产生僵尸线程。
7.5 进程与线程接口对比
| 操作 | 进程 | 线程 |
|---|---|---|
| 创建 | fork | pthread_create |
| 退出 | exit | pthread_exit |
| 回收 | wait | pthread_join |
7.6 线程函数接口
7.6.1 pthread_create
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
功能:在进程中创建一个线程。
参数说明:
- thread:存放线程 ID 空间的首地址
- attr:线程的属性(栈空间大小、优先级、分离/加入属性),默认属性传 NULL
- start_routine:函数指针,指向线程要执行的函数
- arg:对线程函数的传参
返回值:成功返回 0,失败返回错误码。
7.6.2 pthread_exit
void pthread_exit(void *retval);
功能:退出当前线程。
参数说明:
- retval:线程退出时返回给回收者的值
7.6.3 pthread_join
int pthread_join(pthread_t thread, void **retval);
功能:回收指定线程的空间,具有阻塞功能。
参数说明:
- thread:要回收的线程 ID
- retval:存放线程退出状态空间的首地址
返回值:成功返回 0,失败返回错误码。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)