请教道友们一个问题

12-02-01 KenWT
记得去年面试中,面试官问过我这么一个问题,回来读了许久书,终于比当初明白了一些,但是还是感觉心中所理解的不够全面,所以在论坛里发出来,大家一同探讨探讨。他的问题是,多线程的优劣分别是什么?是不是线程创建得越多,程序的性能效率就越高?恳请大家踊跃拍砖!望道友们多赐教,这个问题,如何回答,才比较全面清晰而且准确严谨呢?

berserk
2012-02-01 18:05
并不是线程越多,效率越高。多线程主要的好处是并行处理。能提高系统的处理速度,和系统吞吐量。

我谈一点, 就是要看工作是否是可分割的,比如解析一个大型xml,使用多线程是可以加快解析过程。

而一个大数据量的excel记录导入db工作,看似可以用多线程来将excel记录集切分处理,但实质上,这并不能使系统效率提高,因为瓶颈处在io上,即使用多线程提高了excel记录的解析数据,但最终所有记录集都会在db的io上排队。

多线程使用还是看时机。并不是有就好,更不是越多越好。

sanatir
2012-02-02 00:51
多线程并不是越多效率越高,有时候反而会降低。因为线程上下文切换代价不菲。

另外,多线程会让你的代码更复杂和难以掌控,很多时候能不用就不用。

单处理器一般不建议使用多线程,选择多线程的一个原因是阻塞,比如IO或者GUI。

多处理器则会适当的时候适当创建线程,数目一般与CPU核数相同,另外要注意的是,少切换多计算,理由见上。

多线程只是一种解决方案而已,并不是万能药,有时候改进算法比起多线程来得明智。

alexwoo
2012-04-05 19:16
阿姆达尔定律

http://software.intel.com/zh-cn/articles/predicting-and-measuring-parallel-performance/

猜你喜欢