线程与进程的区别

1.进程是什么呢?

        我们可以通过查看“Windows任务管理器”中的列表,完全可以将运行在内存中的exe文件理解成进程,进程是受操作系统管理的基本运行单元。

2.那么什么又是线程呢?

       线程可以理解成是在进程中独立运行的子任务比如,QQ.exe运行时就有很多的子任务在同时运行,再如,好友视频线程、下载文件线程 、传输数据线程、发送表情线程等等。这些不同的任务或者说功能都可以同时运行,其中每一项任务完全可以理解成是“线程”在工作,传文件、听音乐、发送图片表情等功能都有对应的线程在后台默默的运行。

 3.再来普及一下使用多线程有什么优点呢?

        其实你只要使用过“多任务操作系统”的经验,比如Windows系列,那么它的方便性大家都有体会;使用多任务操作系统Windows后,可以最大限度的利用CPU的空闲时间来处理其它任务,比如一边让操作系统处理正在由打印机打印数据,一边使用Word编辑文档,而CPU在这些任务之间不停的切换,由于切换速度非常的快,给使用者的感觉就是这些任务似乎在同时运行,所以使用多线程技术后,可以在同一时间内运行更多不同种类的任务。为了更加有效的理解多线程的优势,看下以下的模型图,理解一下单任务的缺点。

线程与进程的区别

在图中,任务1和任务2是两个完全独立,互不相干的任务,任务1在等待远程服务器返回数据,以便进行后期处理,这时CPU一直处于等待状态,一直在“空运行”。如果任务2是在10秒后被运行,虽然执行任务2的时间非常的短,只需要1秒,但也必须在任务1运行结束后才能运行任务2,本程序是在单任务环境中运行,使用任务2有非常长的等待时间,系统运行效率大幅度的降低。单任务的特点就是排队执行,也就是同步,就像在cmd中输入一条命令后,必须等待这条命令执行完才可以执行下一条命令,这就是单任务环境的缺点,即CPU利用率大幅度的降低

在看看多任务环境:

线程与进程的区别

在图中我们可以发现,CPU完全可以在任务1执行的同时执行任务2,使任务2不必等任务1执行完后再执行,这样的话系统的运行效率得到了大大的提升,这就是要使用多线程技术、学习多线程的原因。这也是多线程的优点,使用多线程也就是在使用异步。

 

注意:多线程是异步的,所以千万不要把代码的顺序当成线程的执行顺序,线程被调用的时机是随机的。