- 4
- 0
- 约7.06万字
- 约 62页
- 2019-02-21 发布于天津
- 举报
跋
多核多线程已经成为当前一个时髦的话题,早在 2005 年 C++ 大师 Herb Sutter 就说过
免费的午餐已经结束,并发编程的时代已经来临。从接触第一个多线程项目以来,已经是
第四个年头了,一直想把这几年的点点滴滴写成文章,让刚接触的人少走弯路,这便是我
写这本书的初衷。
很早就有了此想法,一是由于自己懒惰,二是业余时间比较少,三是才疏学浅 不敢瞎
写,所以一直未能成行。趁着这段休闲的日子 ,将以前发表过的文章集结成册,便于大家
阅读。
虽然只是V1.0 版,但我会不断的更新版本,后续会将自己心得或者项目的开发经验添
加进本书 ,同时也会将以前发表的文章进行细化,讲透讲明白。由于是第一次写书,经验
欠缺,只是站在自己的角度看待问题,不知道读者您是如何看待多核多线程编程的,欢迎
您的来信,讲述您对多核多线程的疑惑,以及开发过程中碰到的问题及经验 ,可能我解答
不了您的疑问,但我们可以就相关问题进行探讨。欢迎大家给本书提建议和挑错 ,也许您
的建议将决定本书内容的走向,挑错可以避免误导其他读者。
本书所讲述内容针对于 linux 平台,其他平台仅供参考。
欢迎大家给我发 E-Mail:normalnotebook@126.com ,就多核多线程问题进行相关讨论。
个人博客地址:/normalnotebook
原理篇
铁路与多核多线程
如何理解多核多线程这些概念呢?
在自然世界中,总有那么一些事物是类似的。如果我们加以抽象和归纳,就可以得出
相同或者相类似的结论,比如铁路系统和多核多线程就有相似之处。
对于任何一名出门在外的人来说,春节能买张回家的火车票,不能不说是人生的一大
幸事。相信大家在排队买票的时候,曾经都抱怨过,怎么不多增开几列火车,让大家早点
回家呢?当这种想法开始在大脑中萌发时,证明您已经拥有了多线程的思想。对于相同的
出发地和目的地,通过增开列车的方法来提高运输效率,就相当于在一个进程中采用多线
程的方法来提高程序的吞吐率。
从成本和资源利用率的角度考虑,不可能为不同的目的地修建单独的铁路,而会共享
相关路段。当不同列车需要同时使用同一路段时,就会造成道路的竞争,交通一旦拥塞,
效率开始变的低下和事故频发。为了解决这个问题,信号灯开始出现在关键岔口上,只有
当列车收到允许通过的信息后,才能继续前行。如果从多线程的角度来看待道路竞争引发
的问题,可以认为是线程的同步问题。在多线程程序中,可以利用各种锁或者信号量等同
步手段来解决资源冲突的矛盾,只有解决了资源冲突问题,才能保证程序的正确性。
是不是多增开几列火车,就可以缓解买票难的问题呢(这里不讨论各方利益的问
题)?临客便开始出现在人们的视野中。 如果临客和其他列车拥有相同的待遇,在关键路
径上,按照 FIFO 的策略,排队一一通过,就有可能造成大量的火车晚点,久而久之,最终
造成整个铁路系统的瘫痪。于是引入了优先级的概念,一旦发生资源冲突时,临客就停下
来到旁边歇歇,让道给高优先级的大佬们(D/Z/T/K/N 等开头的火车)。 从操作系统的角
度来观察临客的解决方案,这个过程相当于多线程中的线程调度,让不同的线程拥有不同
的优先级和调度策略,来提高程序的整体效率。
解决了临客的调度问题,真的可以解决买票难的问题吗?不能,于是新的方案—— 大
修铁路—— 又被提上了日程, 减少关键资源的冲突,让不同目的地的火车在不同铁路线路
上驰骋。这种方法就相当于我们今天谈论的多核技术,让不同功能的进程在不同的核上运
行,或者让同一进程的不同功能的线程运行在不同的核上 。
将多核多线程与实际生活中的例子进行类比,多核多线程显得并不神秘。它只是用来
提高程序运行效率的一种手段,暂时还不会打破现有的编程模式。
测试你对多核多线程的认知程度
目前,多核多线程编程已经成为一种趋势,但大部分程序员还没有从串行程序的思维
中走出来。即使有些人对多核多线程的概念有所了解,但也是一知半解,写起多核多线程
程序来总是束手束脚。
据 Intel 预测,到 2013 年 CPU 将达到 256 核。掐指头算一算,也就是还有 5 年的时
间,但留给我们程序员的时间却很少了。这不是危言耸听,现实情况确实如此。如果从现
在就开始重视这一问题,不断的学习,并加以积累,相信不久的将来,也许你就比别人多
了一次机会。
我曾经对周围的朋友做过一次有趣的调查,调查对象都曾有过多线程编码经验,以此
来了解大家对多核与多线程的认知程度。当然不可否认,由于自身知识水
您可能关注的文档
- 公司代码603222公司简.PDF
- 公司2018年度首次现场技术交流会在我部顺利召开.PDF
- 公司代码603721公司简称.PDF
- 公司通讯2011年11月.PDF
- 六、师生各项成果的获奖证书佐证材料.PDF
- 六盘水市实验二小学图书一批成交公告附件.PDF
- 关于2014年迎新晚会节目征集的通知.doc
- 关于2015年研究生学业奖学金、优秀奖学金、优秀研究生干部.doc
- 关于《毽子变乖了》的几点教学浅见——兼与某老师商榷.PDF
- 关于举办2018中国音乐小金钟全国二胡展演的通知.PDF
- 中国国家标准 GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具.pdf
- 《GB/T 6675.9-2025玩具安全 第9部分:化学及类似活动的实验玩具》.pdf
- GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 中国国家标准 GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求.pdf
- 《GB/T 46975-2025婴童用品 便携式婴儿睡篮技术要求》.pdf
- 《GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法》.pdf
- GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 6675.14-2025玩具安全 第14部分:指画颜料要求和测试方法.pdf
- 中国国家标准 GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用.pdf
- 《GB/T 33772.3-2025质量评定体系 第3部分:印制板及层压板最终产品检验及过程监督用抽样方案的选择和使用》.pdf
原创力文档

文档评论(0)