计算机基础
1、进程和线程、协程
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程是系统进行资源分配和调度的一个独立单位,有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。 线程是CPU调度和分派的基本单位,线程有自己的堆栈和局部变量,但线程没有独立的地址空间,一个线程死掉就等于整个进程死掉,所以多进程比多线程的程序健壮。 进程切换时,耗费的资源较大,效率低。但是对于一些要求同时进行并且又要和共享某些变量的并发操作,只能用线程,不能用进程。
线程和进程的区别
一个程序至少有一个进程,一个进程至少有一个线程。
线程的划分尺度小于进程,使得多线程程序的并发性高。
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但是操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。
协程
协程是一种一种用户态的轻量级线程,调度完全由用户控制。协程拥有自己的寄存器上下文和栈,直接操作栈时基本没有切换内存的开销,可以不加锁地访问全局变量。上下文切换非常快。
2、并发和并行
并发:一个处理器同时处理多个任务,但是同一时间只有一个任务正在执行。
并行:多核处理器同事处理多个任务,同一时间有多个任务正在执行。
前者是逻辑上的同时发生,后者是物理上的同时发生。并发并不一定要同一时刻发生,但并行一定是同时发生。并行是并发的子集。
3、参考文献
Last updated