采取多进程的模式,很大的一个起因是为了阅读器进程的稳固性。
多进程的话,当访问一个页面的进程解体时,由于进程间是独立的,并不会造成别的页面进程解体,不会产生开了一堆网页一解体全没了的状况。
Windows是一个多义务的系统,假设你经常使用的是windows 2000及其以上版本,你可以经过义务治理器检查以后系统运转的程序和进程。
什么是进程呢?当一个程序开局运转时,它就是一个进程,进程所指包括运转中的程序和程序所经常使用到的内存和系统资源。
而一个进程又是由多个线程所组成的,线程是程序中的一个口头流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以口头雷同的函数。
多线程是指程序中蕴含多个口头流,即在一个程序中可以同时运转多个不同的线程来口头不同的义务,也就是说准许单个程序创立多个并行口头的线程来实现各自的义务。
阅读器就是一个很好的多线程的例子,在阅读器中你可以在下载JAVA小运行程序或图象的同时滚动页面,在访问新页面时,播放动画和声响,打印文件等。
多线程的好处在于可以提高CPU的应用率——任何一个程序员都不宿愿自己的程序很多时刻没事可干,在多线程程序中,一个线程必定期待的时刻,CPU可以运转其它的线程而不是期待,这样就大大提高了程序的效率。
但是咱们也必定意识到线程自身或者影响系统功能的不利方面,以正确经常使用线程:线程也是程序,所以线程须要占用内存,线程越多占用内存也越多 多线程须要协和谐治理,所以须要CPU期间跟踪线程 线程之间对共享资源的访问会相互影响,必定处置竞用共享资源的疑问 线程太多会造成控制太复杂,最终或者形成很多Bug 基于以上意识,咱们可以一个比喻来加深了解。
假定有一个公司,公司里有很多各司其职的职员,那么咱们可以以为这个反常运作的公司就是一个进程,而公司里的职员就是线程。
一个公司至少得有一个职员吧,同理,一个进程至少蕴含一个线程。
在公司里,你可以一个职员干一切的事,但是效率很显然是高不起来的,一团体的公司也无法能做大;一个程序中也可以只用一个线程去做事,理想上,一些过期的言语如fortune,basic都是如此,但是象一团体的公司一样,效率很低,假设做大程序,效率更低——理想上如今简直没有复线程的商业软件。
公司的职员越多,老板就得发越多的薪水给他们,还得消耗少量精神去治理他们,协调他们之间的矛盾和利益;程序也是如此,线程越多消耗的资源也越多,须要CPU期间去跟踪线程,还得处置诸如死锁,同步等疑问。
总之,假设你不想你的公司被称为“皮包公司”,你就得多几个员工;假设你不想让你的程序显得稚气,就在你的程序里引入多线程吧! 本文将对C#编程中的多线程机制启动讨论,经过一些实例处置对线程的控制,多线程间通信等疑问。
为了省去创立GUI那些繁琐的步骤,更明晰地迫近线程的实质,上方一切的程序都是控制台程序,程序最后的()是为了使程序中途停上去,以便看分明口头环节中的输入。
其实你的意思并不是“多线程”的意思,而是阅读器在多个点里启动下载,而提上下载速度。
如今的阅读器都支持这种技术,比如IE6可以最多同时下载20个图片,或网页元素,并将它们区分关上。
但是在网页制造中,人们往往驳回表格来规划,而阅读器往往是将一个表格所有读取实现后才显示进去,这样,用表格来规划,往往速度就很慢了,这外面的慢其实是表格内容一下子显示进去,期待的环节让人着急而已。
如今用CSS+DHMTL规划手腕就有效处置了这个疑问,网页中不同的元素分列在不同的“层”里,这样阅读器就可以区分下载,区分显示,从而优化了下载的速度,并且也精减了网页代码,使阅读器解释的速度变快。
假设你想要这样的成果,那就试试用CSS来规划吧