程序是指令的集合,是进程运行的静态描述文本;进程是程序的一次执行活动,是动态的概念。
多进程程序让用户感觉每一个体都有自己的CPU和其他资源,但是进程只能在一个时间点干一件事情,当需要同时处理两件或者以上的事情时,它就显得无能为力了,另外,进程如果在执行的过程中阻塞,如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行下去。
线程是进程的一个实体,是CPU调度和分配的基本单位,是比进程更小的能独立运行的基本单位,线程基本上不拥有系统资源,只会占用一点保证运行必不可少的资源,如程序计数器、寄存器和栈,但是线程可以与同一进程中的其他线程共享进程拥有的全部资源,而且一个线程可以创建和撤销另一个线程,同一进程中的多个线程可以同步并发执行。