什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序
所使用到的内存和系统资源。而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自
己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。多线程是指程
序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创
建多个并行执行的线程来完成各自的任务。浏览器就是一个很好的多线程的例子,在浏览器中你可以在下载JAVA小应
用程序或图象的同时滚动页面,在访问新页面时,播放动画和声音,打印文件等。
多线程的好处在于可以提高CPU的利用率——任何一个程序员都不希望自己的程序很多时候没事可干,在多线程程序中
,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。
然而我们也必须认识到线程本身可能影响系统性能的不利方面,以正确使用线程:
线程也是程序,所以线程需要占用内存,线程越多占用内存也越多
多线程需要协调和管理,所以需要CPU时间跟踪线程
线程之间对共享资源的访问会相互影响,必须解决竞用共享资源的问题
线程太多会导致控制太复杂,最终可能造成很多Bug
4。谈谈网络应用中的多线程技术(2000年)
4.1一些基于微软浏览器内核的外壳浏览器这样的浏览器通称为多线程浏览器。这里多线程的含义就是指浏览器能够同
时和多个远程服务器建立连接关系。实际上,这样的浏览器在工作的时候,每打开一个网页,就是建立了一个线程。
当然,这样的线程也遵从“即插即用”的规律。
4.2 下载工具中的多线程技术
经典的下载工具(更确切地说是一些著名下载工具的经典版本)都采用一个线程来下载软件。例如早期的Getright、
GoZilla以及Net Vampire,以及浏览器本身的下载功能等等
但线程下载最大的问题就是,一旦网络出现繁忙状态,下载速度将变得很低。为了在网络拥挤的时候也能够较快地下
载到一个软件,人们尝试采用多个链接来下载,即下载之前将要下载的软件分为几个部分),然后建立多个连接,每
个连接负责下载一个部分。多个部分下载到计算机中以后再由下载程序合并起来。这就是所谓的多线程下载技术。
多线程下载最大的优点在于能够地利用线路的带宽资源,在较短的时间内下载较多的数据,进而提高下载的效率。
这就好比使用多辆车来运输一堆货物一样。如果一辆车需要往返两次,那么用两辆车则只要往返一次就可以了。