行业知识
Linux:线程控制
2026-10-30 14:56:00
来源:互联网转载
���录
线程的相关知识
线程创建
pthread_create
线程关于进程内部资源问题
线程等待
pthread_join
线程退出
pthread_cancel
线程id的理解
pthread_self
线程分离
pthread_detach
线程的相关知识
首先线程是在进程内部执行的,是OS调度的基本单位
线程的理解:之所以说线程是在进程内部执行的,是OS调度的基本单位,是因为线程是在进程的地址空间内运行,并且CPU其实是不关心执行流是进程还是线程,只关心PCB
而Linux中,一个进程有一个PCB结构体,即task_struct,以这个task_struct为父亲,不重新创建新的地址空间、页表,而是只创建新的task_struct,与进程的task_struct共用地址空间(mm_struct)、页表,并且通过一定的技术手段,将当前进程的资源,以一定的方式划分给不同的task_struct,上述这样的每一个task_struct就称之为线程
在前面我们学习过,用户视角中:进程 = 内核数据结构 + 该进程对应的代码和数据
并且之前学习进程时,进程的内核数据结构只有一个PCB结构体,今天引入了线程,知道了一个进程的内核数据结构可以有多个PCB结构体
只有一个PCB结构体,称之为内部只有一个执行流,而若有多个PCB结构体,说明进程内部具有多个执行流,其中一个task_struct就代表进程内部的一个执行流
今天站在内核视角:进程是承担分配系统资源的基本实体
因为系统分配的资源都是刚开始的进程向系统索要的,而下面的线程都只是用上面进程所申请的资源,所以内核角度说进程是承担分配系统资源的基本实体
CPU并不关心进程与线程的概念,只关注task_struct
在Linux下,PCB