理解进程和线程

  • 进程

    • 进程是一个“执行中的程序”;比如我们在系统中安装QQ和浏览器,也就是说我们安装了两个程序;当我们打开了QQ程序,这时CPU就会开启一个进程来运行QQ程序;当然如果我们又打开了浏览器,CPU又会再开启一个进程来运行浏览器;
    • 一个应用程序就是一个进程
    • CPU没开启一个进程就会给这个进程分配一块内存。
    • 进程之间是相互独立的,内存是不共享的。
  • 线程

    • 通常在一个进程中可以包含若干个线程。比如在QQ应用程序中,我们可以边视频边语音,也就有两个线程,一个是视频的线程,一个是语音的线程。
    • 进程是一个容器,线程是此容器中的工作单位。
    • 线程是CPU的基本调度单位。多线程是CPU对线程的频繁切换调用现实的伪多线程。
    • 同一个进程中的多个线程是内存共享的。
  • 线程与进程的区别

    • 地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
    • 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
    • 调度和切换:线程上下文切换比进程上下文切换要快得多。
  • 系统、进程、线程的关系图