
什么是线程在一个程序(进程)里的一条执行流就叫做线程(thread),也就是说有多线程功能的进程内,可以有多个线程同时执行
所以我们可以认为:
一个进程至少有一个执行进程
线程在进程内部运行,本质是在进程提供的地址空间内运行
而对于Linux实现的线程,本质上是轻量化的进程,还是用的task_struct去维护的每一个线程
关于线程间内存共享如上图所示,线程之间只有栈区是相互独立的, 像是全局变量,堆区数据都是共享的
线程的优点
创建一个新线程的代价要比创建一个新进程小得多
与进程之间的切换相比,线程之间的切换需要操作系统做的工作要少很多
线程占用的资源要比进程少很多
能充分利用多处理器的可并行数量
在等待慢速I/O操作结束的同时,程序可执行其他的计算任务
计算密集型应用,为了能在多处理器系统上运行,将计算分解到多个线程中实现
I/O密集型应用,为了提高性能,将I/O操作重叠。线程可以同时等待不同的I/O操作。
线程的缺点性能损失一个很少被外部事件阻塞的计算密集型线程往往无法与共它线程共享同一个处理器。如果计算密集型线程的数量比可用的处理器多,那么可能会有较 ...