zoukankan      html  css  js  c++  java
  • 进程和线程的区别

    一.最小单位方面

    进程是资源分配和管理的最小单元(为什么不是线程呢?因为线程自身所带的资源是不全的,还要用进程中资源)

    线程是程序执行的最小单元.

    二.切换成本

    进程在创建时,系统需要给它分配独立的地址空间,需要用数据表来记录它的代码段,数据段以及堆栈段.当进行线程切换时,成本比较高,需要刷新cache和tlb.

    同一个进程中的线程之间共用同一个地址空间,可以通过全局变量或者静态变量来实现数据同步,在切换时成本比较低.

    三.通信方面

    进程通信需要专门的通信方式,比如管道通信,信号量,共享内存,套接字(socket),消息队列(比如ZMQ).

    线程通信:全局变量,Message消息机制(Windows),事件类(Windows)

    四.健壮性

    因为有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响

    线程有自己的堆栈和局部变量,但线程之间没有独立的控件,所以一个线程出现问题,可能导致整个程序出现问题.

    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    pku 1330 LCA
    最近公共祖先(LCA)的Tarjan算法
    字典数模板
    字典树
    RMQ问题ST算法与模板
    RMQ(Range Minimum/Maximum Query)问题:
    罗穗骞的dc3和倍增法
    多重背包问题
    tarjan LCA 算法
    终极工程师的造诣 – 不迷信高科技的乔布斯给我们的启示
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/12727421.html
Copyright © 2011-2022 走看看