美文网首页pythonGolang并行计算
12 进程和线程的区别?同步异步的区别?并行和并发的区别?

12 进程和线程的区别?同步异步的区别?并行和并发的区别?

作者: 豆丶浆油条 | 来源:发表于2017-09-06 16:17 被阅读283次

    整个《面试题》都是对[2017年6月iOS招人心得(附面试题)]的整理

    1.进程和线程的区别

      线程和进程的区别主要在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式的影响下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等同于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。
      线程是CPU独立运行和独立调度的基本单位(可以理解为一个进程中执行的代码片段)。
      进程是资源分配的基本单位(进程是一块包含了某些资源的内存区域)。
      进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程是线程的容器,真正完成代码执行的线程,而进程则作为线程的执行环境。一个程序至少包含一个进程,一个进程至少包含一个线程,一个进程中的所有线程共享当前进程所拥有的资源。

    2.同步异步的区别

      异步和同步是相对的,同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。线程就是实现异步的一个方式。异步是让调用方法的主线程不需要同步等待另一线程的完成,从而可以让主线程干其它的事情。
      异步和多线程并不是一个同等关系,异步是最终目的,多线程只是我们实现异步的一种手段。异步是当一个调用请求发送给被调用者,而调用者不用等待其结果的返回而可以做其它的事情。实现异步可以采用多线程技术或则交给另外的进程来处理。

    3.并行和并发的区别

      并发行和并行性的区别可以用馒头做比喻。前者相当于一个人同时吃三个馒头和三个人同时吃一个馒头。
      并发性(Concurrence):指两个或两个以上的事件或活动在同一时间间隔内发生。并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。
      并行性(parallelism)指两个或两个以上事件或活动在同一时刻发生。在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。
      区别:一个处理器同时处理多个任务和多个处理器或者是多核的处理器同时处理多个不同的任务。
      前者是逻辑上的同时发生(simultaneous),而后者是物理上的同时发生。
      两者的联系:并行的事件或活动一定是并发的,但反之并发的事件或活动未必是并行的。并行性是并发性的特例,而并发性是并行性的扩展。

    相关文章

      网友评论

        本文标题:12 进程和线程的区别?同步异步的区别?并行和并发的区别?

        本文链接:https://www.haomeiwen.com/subject/ttlvjxtx.html