这是对线程,进程,多线程,互斥,同步,死锁的介绍:
-
进程和线程:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位。进程有独立的一块内存空间,一个进程最少一个线程,也可以拥有多个线程。线程共享进程的内存空间。
-
进程和线程的区别:进程和进程之间不会相互影响,但是线程之间会相会影响,一个线程崩溃可能导致其他线程崩溃,进而导致进程破溃。进程与进程之间不能直接共享数据,需要通过第三方通信协议。线程直接可以共享资源数据。
-
进程切换和线程切换:进程切换会有较大的开销,主要原因是每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换需要保存和恢复这些信息。相比之下,线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销相对较小。
-
多线程:多线程可以方便操作,优化页面GUI,可能提升运行效率。但是,大量线程可能会影响运行,需要太多内存,容易出错,产生死锁。
-
互斥:当多个线程需要访问相同的资源时,要求在一个时间段内只能允许一个线程来操作访问该资源,操作完后别的线程才能读取该资源,这叫线程的互斥。
-
同步:同步是按照一定访问顺序的互斥,比如某件衣服规定A穿后B穿然后C穿。
-
线程基本状态:线程有三种基本状态,就绪,阻塞,运行。
-
死锁:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。死锁产生的原因包括进程资源分配冲突,执行顺序不对,资源使用没用设置限制。避免死锁的方法包括设置资源优先级,资源抢夺,以及使用银行家算法。当死锁发生后,需要检测死锁是否存在,采取适当措施,从系统中将已发生的死锁清除掉。