美文网首页
进程与线程

进程与线程

作者: 即墨灯火 | 来源:发表于2017-09-30 23:41 被阅读11次

    虽然不明白这个问题有什么好问的但是面试总会被问到。以下仅仅是我个人的理解

    进程是计算机分配资源的最小单位,线程是CPU调度的最小单位。

    它们的存在都是为了更好的利用计算机资源。

    一个进程的多个线程是共享内存区域的。进程之间是独立的。线程有自己独立的栈和局部变量,但线程之间没有独立的地址空间

    切换进程的代价远比切换线程要高。进程通信的代价远比线程通信要高。

    在当下,进程是一个或一组线程的容器。我们通常都在编写多线程的程序,很少设计到多进程。

    知乎有个说法

    • 单进程单线程:一个人在一个桌子上吃菜。
    • 单进程多线程:多个人在同一个桌子上一起吃菜。
    • 多进程单线程:多个人每个人在自己的桌子上吃菜。

    简单比较:

    • 数据共享性:多进程共享依赖复杂的进程间通信;多线程数据共享因共享进程数据而十分简单。
    • 数据同步:多进程数据分开,同步简单;多线程数据同步复杂。
    • 资源消耗:多进程占用CPU,内存多;多线程占用CPU,内存小。
    • 创建销毁切换:多进程复杂;多线程简单。
    • 编程:多进程简单;多线程复杂。
    • 可靠性:多进程不进行进程间通信的话,进程间不会互相影响;多线程一个线程挂掉将导致整个进程挂掉。
    • 分布式:多进程适合多机分布式,扩展方便;多线程适合多核分布式。

    相关文章

      网友评论

          本文标题:进程与线程

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