理解进程和线程
进程
- 进程是一个“执行中的程序”;比如我们在系统中安装QQ和浏览器,也就是说我们安装了两个程序;当我们打开了QQ程序,这时CPU就会开启一个进程来运行QQ程序;当然如果我们又打开了浏览器,CPU又会再开启一个进程来运行浏览器;
- 一个应用程序就是一个进程
- CPU没开启一个进程就会给这个进程分配一块内存。
- 进程之间是相互独立的,内存是不共享的。
线程
- 通常在一个进程中可以包含若干个线程。比如在QQ应用程序中,我们可以边视频边语音,也就有两个线程,一个是视频的线程,一个是语音的线程。
- 进程是一个容器,线程是此容器中的工作单位。
- 线程是CPU的基本调度单位。多线程是CPU对线程的频繁切换调用现实的伪多线程。
- 同一个进程中的多个线程是内存共享的。
线程与进程的区别
- 地址空间和其它资源:进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
- 通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。
- 调度和切换:线程上下文切换比进程上下文切换要快得多。
系统、进程、线程的关系图