进程
进程是相对于 程序而言,程序是一堆静止的文件, 而当程序运行起来以后 就是一个进程,是动态的。 操作系统会为进程分配CPU ,内存,磁盘空间等一系列资源。进程是系统资源分配的最小单位, 进程通过消息队列,共享内存等机制实现进程间通信。
进程是抢占式的争夺CPU运行自身
线程
线程是由进程创建的,共享进程的的内存地址空间,操作系统会为线程创建堆栈的而分配内存,这些开销并不大。线程通过共享变量和锁机制 协作。线程是CPU调度的最小单位
协程
协程是属于线程的, 是顺序处理的,在任何给定时间只有一个协程在执行。
协程与线程的主要区别是什么 : 协程的上下文切换需要极小的资源,是程序本身控制的。 而线程的上下文切换需要操作系统内核调度,而且创建线程的开销是比协程大的多的。所以当线程多了以后自身调度的开销就非常大,而协程可以有成千上万个
并发: 需要cpu 调度,多任务是交替运行的。 有可能是模拟的并发,比如1核CPU。
并行: 需要硬件支持, 多和同时处理
参考链接:
Difference between a “coroutine” and a “thread”?