快速业务通道

一天浏览一本书-----《多线程编程杂谈》

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-27

下附原件:::

在采用多线程方法设计程序时,如果产生的额外开销大于线程的工作任务,就没有并行的必要.线程并不是越多越好,软件线程的数量尽量能与硬件线程的数量相匹配.最好根据实际的需要,通过不断的调优,来确定线程数量的最佳值.

线程启停以及线程上下文切换会引起额外的开销,消耗的时间比单线程多.

读写锁就是罪魁祸首

在实际测试过程中,不加锁的三线程方案非常不稳定,有时所花费的时间相差4 倍

多.

要提高并行程序的性能,在设计时就需要在较少同步和较多同步之间寻求折中.同步

太少会导致错误的结果,同步太多又会导致效率过低.尽量使用私有锁,降低锁的粒度.

无锁设计既有优点也有缺点,无锁方案能充分提高效率,但设计更加复杂,维护操作

困难,不得不借助其他机制来保证程序的正确性.

针对Cache 的优化

处理器交换的最小单元是cache 行,或称cache 块.在多核体系中,对于不共享cache

的架构来说,两个独立的cache 在需要读取同一cache 行时,会共享该cache 行,如果在其

中一个cache中,该cache行被写入,而在另一个cache中该cache行被读取,那么即使读写的地址不相交,也需要在这两个cache之间移动数据,这就被称为cache伪共享,导致执行核在存储总线上来回传递这个Cache行,这种现象被称为“乒乓效应”.

__attribute__((__aligned__(L1_CACHE_BYTES)))来确定cache的大小.

CPU亲和力可分为两大类:软亲和力和硬亲和力.

采用多核多线程并行设计方案,能有效提高性能,但如果考虑不全面,如忽略带宽、数据竞争及数据同步不当等因素,效率反而降低,程序执行越来越慢.

本文出自 “人生得意须尽欢” 博客,请务必保留此出处http://no001.blog.51cto.com/1142339/687777

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号