Linux 开发系列笔记(3.1) - 线程概述
建站提交历史文章,原文写作时间 2023 年 2 月前后。
线程概述
-
线程
(Thread
)本质上是轻量级进程(LWP
,Light Weight Process
),但与进程拥有不同的行为。在Linux
中线程
被当作进程进行处理,在原生Linux
中并不支持线程
。现在Linux
操作系统上的线程
,大多是Red Hat
基于POSIX
开发的NPTL
(Native POSIX Tread Library
)。 -
线程
是轻量级进程。在进程创建时虽然运用写时拷贝
技术大幅度减少了拷贝量,但仍然需要拷贝PCB
中诸如虚拟内存映射表
以及文件描述符表
中的数据;线程
共享PCB
,这意味着线程
创建时拷贝的数据量很小,创建线程
的开销通常是进程创建的1/10
或者更少。 -
线程
依然具有不共享资源:线程号
与线程
的实时调度策略与优先级- 信号掩码
线程
特有数据errorno
变量(线程
操作中,errorno
通过函数返回,而非设置全局变量
)栈空间
与.text空间
(线程
运行在函数体
中,因此外部无法访问函数体
数据与代码)
-
与进程不同地,进程拥有父子关系构成的复杂
进程树
结构,而线程
仅拥有主线程
与子线程
的二级父子关系。
评论