多线程和单线程的比较
作者: alexclark(http://alexclark.itpub.net)发表于: 2005.09.05 19:00
分类:
出处: http://alexclark.itpub.net/post/670/40209
---------------------------------------------------------------
这个比较程序是有问题的。往CONSOLE写在系统级上应该是互斥的,一个时间里只有一个THREAD能ACCESS,所以肯定多线程要慢;但如果是机器
有两个以上的CPU,多线程之间没有多大关联的话,多线的优势就体现了。譬如如果两线程有大量的计算,那么大致来讲在双CPU机器上多线程应该快一倍。
IIS之类的服务器之所以做成多线程,一是多CPU的考虑,二是防止出现一个调用出现问题就BLOCK整个IIS SERVER的现象。譬如你写一个流氓ASP里有一个死循环,如果IIS是单线程,那整个IIS都给BLOCK住了。
当然我在这里只是讨论了单CPU的情况…………
如果一台机器上有2个以上的CPU那多线程的优势是不言而喻的啦
多线程的优势在于可以并行执行的任务。
比如一个线程读取硬盘数据,一个线程进行计算。
或者一个线程读取网络数据,一个线程操作数据,一个线程写硬盘数据。
以上都是可以从多线程中获得高效率的例子。
另外一个需要使用多线程的地方是界面。比如后台有一个比较耗时的操作(比如读取大量的数据),如果不使用多线程讲造成界面失去响应。
除此之外的其他任务,比如一些计算密集型的任务,或者使用多线程需要频繁互斥的任务,使用多线程不但不会提高效率反而会由于频繁的上下文切换而降低效率。
比较就是证实一下线程切换确实是浪费的时间的



