我谈一点, 就是要看工作是否是可分割的,比如解析一个大型xml,使用多线程是可以加快解析过程。
而一个大数据量的excel记录导入db工作,看似可以用多线程来将excel记录集切分处理,但实质上,这并不能使系统效率提高,因为瓶颈处在io上,即使用多线程提高了excel记录的解析数据,但最终所有记录集都会在db的io上排队。
多线程使用还是看时机。并不是有就好,更不是越多越好。
另外,多线程会让你的代码更复杂和难以掌控,很多时候能不用就不用。
单处理器一般不建议使用多线程,选择多线程的一个原因是阻塞,比如IO或者GUI。
多处理器则会适当的时候适当创建线程,数目一般与CPU核数相同,另外要注意的是,少切换多计算,理由见上。
多线程只是一种解决方案而已,并不是万能药,有时候改进算法比起多线程来得明智。
http://software.intel.com/zh-cn/articles/predicting-and-measuring-parallel-performance/
猜你喜欢
本站原创《复杂软件设计之道:领域驱动设计全面解析与实战》