进程是程序的一次执行过程,是一个动态概念,是程序在执行过程当中分配和管理资源的基本单位,每个进程都有一个本身的地址空间,至少有 5 种基本状态,它们是:初始态,执行态,等待状态,就绪状态,终止状态。html
线程是CPU调度和分派的基本单位,它可与同属一个进程的其余的线程共享进程所拥有的所有资源。多线程
协程,是一种比线程更加轻量级的存在,协程不是被操做系统内核所管理,而彻底是由程序所控制(也就是在用户态执行)。这样带来的好处就是性能获得了很大的提高,不会像线程切换那样消耗资源。协程在子程序内部是可中断的,而后转而执行别的子程序,在适当的时候再返回来接着执行。并发
并发:在操做系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥异步
互斥:进程间相互排斥的使用临界资源的现象,就叫互斥分布式
同步:进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进程的输出做为后一个进程的输入,当第一个进程没有输出时第二个进程必须等待。具备同步关系的一组并发进程相互发送的信息称为消息或事件。其中并发又有伪并发和真并发,伪并发是指单核处理器的并发,真并发是指多核处理器的并发。性能
并行:在单处理器中多道程序设计系统中,进程被交替执行,表现出一种并发的外部特种;在多处理器系统中,进程不只能够交替执行,并且能够重叠执行。在多处理器上的程序才可实现并行处理。从而可知,并行是针对多处理器而言的。并行是同时发生的多个并发事件,具备并发的含义,但并发不必定并行,也亦是说并发事件之间不必定要同一时刻发生。操作系统
异步:异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,须要等待、协调运行。异步就是彼此独立,在等待某事件的过程当中继续作本身的事,不须要等待这一事件完成后再工做。线程就是实现异步的一个方式。异步是让调用方法的主线程不须要同步等待另外一线程的完成,从而可让主线程干其它的事情。
异步和多线程并非一个同等关系,异步是最终目的,多线程只是咱们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而能够作其它的事情。实现异步能够采用多线程技术或则交给另外的进程来处理。.net
(1)线程执行开销小,但不利于资源管理和保护;进程则相反,进程可跨越机器迁移。线程
(2)多进程时每一个进程都有本身的内存空间,而多线程间共享内存空间;设计
(3)线程产生的速度快,线程间通讯快、切换快;
(4)线程的资源利用率比较好;
(5)线程使用公共变量或者资源时须要同步机制。
参考连接:
【1】https://www.jianshu.com/p/354066717f78
【2】http://www.javashuo.com/article/p-gssvmvcp-bx.html
【3】https://blog.csdn.net/qq_32621445/article/details/78635951
【4】http://blog.sina.com.cn/s/blog_bf63e2650102xcu6.html
【5】http://www.javashuo.com/article/p-kdjgsgvj-kd.html
【6】http://www.javashuo.com/article/p-mxvkvufb-dg.html