- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息科学系
低年级讨论班
(5)
裘宗燕
北京大学数学学院信息科学系
2010年3月~6月
本科生讨论班报告(5 )并发之美 北京大学数学学院信息科学系 裘宗燕 2010年2月18 日/1
并发之美
《代码之美》第24章
本科生讨论班报告(5 )并发之美 北京大学数学学院信息科学系 裘宗燕 2010年2月18 日/2
引言
靠提高主频提高计算
能力的时代已经过去。
Herb Sutter 2005年
的文章:“The Free
Lunch Is Over”中给
出了右边的图
过去,我们总可以准
备买下一代CPU,不
用修改程序
现在就必须考虑多核
和并行处理了
再想程序跑得快,能
充分利用手头计算机
的能力,就必须学会
写并行程序
本科生讨论班报告(5 )并发之美 北京大学数学学院信息科学系 裘宗燕 2010年2月18 日/3
引言
并发程序中有多个计算进程同时进行,计算结果可能依赖于不同进程的
相对进展速度,并发程序的执行和执行效果有本质的非确定性
由于存在非确定性,程序里的bug可能不是每次执行都出现,可能在某
种执行情况下出错,大多数情况下并不出错
程序里的错误可能很难重现,因此测试非常困难
对并发程序,作者认为漂亮的程序应该是“如此之简单和优雅,以
至于明显不可能有错”,而不是“看起来没有明显的错”
要想编写出在任何情况下都能可靠运行的并发程序,必须特别关注程序
的美感。但是,完成同样工作的并发程序
通常没有与之对应的顺序程序漂亮
特别是比较缺乏模块性(less modular)
模块性:功能独立性,直接用在不同的环境里,容易与其他部分共处,
容易组合、扩充,得到的组合容易修改和调整,等等
本科生讨论班报告(5 )并发之美 北京大学数学学院信息科学系 裘宗燕 2010年2月18 日/4
引言
本章介绍软件事务存储(software transactional memory,STM )
这是一项有很好前景的技术
是一种针对共享内存处理器编程的新方法(框架)
共享内存处理器:多个CPU共享同一片内存区域。目前的多核和众
核处理器都属于共享内存处理器
它一种特有的方式支持模块性,而传统并发编程方式没这种功能
本章要通过具体的实例展示STM 的价值
当然,任何技术都不是万能的,STM 也不是万能仙丹
但STM 确实是攻克并发程序这座顽固堡垒的一种漂亮的绝技
本科生讨论班报告(5 )并发之美 北京大学数学学院信息科学系 裘宗燕 2010年2月18 日/5
简单实例:银行账户(1)
本节用一个简单实例展示并发编程中的困难和问题
问题:要求编写一段程序
它把一笔钱从一个银行账户转到另一个银行账户
假定两个账户都在内存
要求代码在并发环境中也能工作(执行环境里可能有其他同时执行
的进程,它们可能访问本进程正在使用的内存位置)
可能同时有多个进程来调用这一转帐函数
正确执行:任何进程都不能看到系统处于不一致的状态(例如:看
到某个账户已经被取出了一笔钱而另一账户还没得到这笔钱)
本例显然是有意编造的,但
它很简单,能帮助看清最关键的问题
Haskell 与STM 结合,可以给出它的一种全新解决方案
本科生讨论班报告(5 )并发之美
文档评论(0)