Liunx之线程

什么是线程?

一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的
控制序列”。
一切进程至少都有一个执行线程。

多任务可以由多进程完成,也可以由一个进程内的多线程完成。

线程和进程的对比

进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统就会创建一个进程,并为它
分配资源,然后把该进程放入进程就绪队列,进程调度器选中它的时候就会为它分配CPU时间,程序开始真正运行。

线程是程序调度/执行时的最小单位,它是进程的一个执行流,是CPU调度和分派的基本单位,一个进程可以由很多个线
程组成,线程间共享进程的所有资源,每个线程有自己的堆栈和局部变量。线程由CPU独立调度执行,在多CPU环境下就
允许多个线程同时运行。同样多线程也可以实现并发操作,每个请求分配一个线程来处理。

(1)线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;
(2)一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

(3)进程之间相互独立,但同一个进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级
的资源(如打开文件和信号),某进程内的线程在其它进程不可见;

 ( 4 )线程共享进程数据,但也拥有⾃自⼰己的一部分数据: >* 线程ID >* 一组寄存器 >* 栈 >* errno >* 信号

屏蔽字 >* 调度优先级

(4)调度和切换:进程占用内存多,切换复杂,cpu利用率低;而线程占用内存少,切换简单,cpu利用率高。线程上下
文切换比进程上下文切换要快的多。
(5) 线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式
(IPC)进行
(6)多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造
成影响,因为进程有自己独立的地址空间

线程的优点

啦啦

线程的缺点

健壮性降低

性能损失

缺乏访问控制

编程难度提高

线程创建

卡卡

线程等待

很多国家和

线程分离

近乎疯狂和

线程的同步与互斥

其他的内容待补充

阅读更多

没有更多推荐了,返回首页