- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多线程类库的设计与实现.doc
多线程类库的设计与实现
引言
很多书都会告诉你那些概念是什么,然而只有很少的书会告诉你具体该怎么做。对于很多人来说,包括我,有时候掌握“该怎么做”要比了解“那是什么”要难得多。一方面,名词解释很少会出错,而且做起来很轻松,而要具体执行的话就立刻涉及到价值观和方法论的问题,这些都比较难于统一,容易引起异议。另一方面,就我个人经验而言,很多人只会解释“那是什么”,而根本不懂“该怎么做”。
所以,我们打算逆流而上,基本上不去说“那是什么”,除非有相当的必要。中心内容是着手“该怎么做”。
这个实践系列可以说是笔者积累的一些心得,当然,不可避免的要涉及到个人的价值观和方法论问题,不可避免的会产生异议。不过那又怎样呢,难道这个世界就不允许有异议吗。实际上,我个人并不排斥异议,相反的,我倒认为没有异议的氛围要么是可怕的,要么是病态的。
目标:用C++设计一个简单、实用、便于移植的线程类
先说第一条,简单,这里指模型简单,机制简单。
我们都知道线程是现代操作系统的基本概念之一,当然定义有很多种了,我们这里随便列一个:
(A thread is) A sequence of instructions which may execute in parallel with other threads.
这个定义是从Wiki上拷过来的,中文直译就是:(线程)是可以和其他线程并行执行的指令序列。这个定义是递归的,一般来说递归定义用来定义比较基本的概念,因为很难再往下分割了。
为了明确起见,我们再为上面的定义加一些限制,让它成为下面的样子:
1.线程是若干计算机指令序列的集合;
2.线程可以和其他线程并行执行;
3.属于同一个进程的若干个线程可以共享地址空间。
第3条又带出另一个概念“进程”,这里就不再解释了。
很多操作系统中有所谓线程的同步通信和异步通信机制。我们只使用同步通信机制。这么做有两个好处,一是可以使我们的线程模型尽量简单,二是可以回避操作系统相关性,因为同步机制比较简单,大多数操作系统的实现相互都很类似,而异步通信机制差别就很大了。
我们再来说实用。
这里的实用是指实用主义,亦即为了减少成本(编码量)、提高效益(开发速度)而舍弃一些“本来应该有”的特性。比如说,我们不打算设计多层次的类,也不打算设计抽象类,而只打算设计一个可以简单使用的线程类。相反的,很多线程库,包括ZThread,将线程模型抽象分化,封装到多个层次的类里面。我们不是说这样的方针不好,这里只是想强调我们的方针是实用主义。
最后一条是关于移植性。
我们希望这个线程类可以不加修改就应用于Windows 32位系统和支持Posix Thread线程的Linux/Unix系统。
其他。
接下来我们来看看开发环境。我们要考虑同时支持Win32和Linux系统。Windows上使用Microsoft ? Visual C++ 2005 Express,因这个软件包具有免费的许可协议,不需要花钱。Linux上使用g++(gcc)3.4.4,更高的版本应该也没有问题,使用这个版本是为了和某些cygwin版本兼容。当然,GNU流都是免费的。
背景:C++与多线程
这个系列的主要内容是介绍怎样用C++语言设计与实现一个多线程类库。尽管多线程在现代主流操作系统中早已不是什么新鲜概念,多线程设计与开发也已经成为软件开发的流行模式,但是目前为止,C++语言规范本身并没有明确支持多线程程序设计。根据目前必威体育精装版的C++语言标准《ISO/IEC 14882:2003 Programming Language C++》,通篇只有一个地方出现thread这个字眼:
When an exception is thrown, control is transferred to the nearest handler with a matching type (15.3); “nearest” means the handler for which the compound-statement, ctor-initializer, or function-body following the try keyword was most recently entered by the thread of control and not yet exited.
(笔者译文:当一个异常被抛出时,(程序)控制被转交到最近的具有匹配类型的异常控制块。“最近”是指距离关键字try最近的并且与该控制同属一个尚未退出的线程的,一个复合代码断,或者构造函数的初始化符(即构造函数的成员初始化列表),或者一个函数体。)
这是标准中唯一一次提到线程这个概念,意思大致是
您可能关注的文档
- 國際分工的方式.ppt
- 在串行口方式1.ppt
- 在用汽车排气污染物限值及检测方法(遥测法-广东环境保护公众网.doc
- 地下水污染脆弱性评价(二)-环境监测院.doc
- 地图制图竞赛技术纲要.doc-湖南省第二测绘院.doc
- 在线教育应用解决方案-中国教育在线.doc
- 地面辐射供暖技术规程-太阳能热水工程.doc
- 场致发射应用新观点--挑战传统CRT显示技术.ppt
- 垃圾郵件法律規範-中興大學教職員工網頁.ppt
- 城镇燃气室内工程施工与质量验收规范-广州燃气集团有限公司.doc
- 中国国家标准 GB/T 45390-2025动力锂电池生产设备通信接口要求.pdf
- 中国国家标准 GB/T 45393.2-2025信息技术 建筑信息模型(BIM)软件 第2部分:参数化模型.pdf
- GB/T 45393.2-2025信息技术 建筑信息模型(BIM)软件 第2部分:参数化模型.pdf
- 《GB/T 45393.2-2025信息技术 建筑信息模型(BIM)软件 第2部分:参数化模型》.pdf
- GB/T 10184-2025电站锅炉性能试验规程.pdf
- 海尔智家股份有限公司海外监管公告 - 海尔智家股份有限公司2024年度环境、社会及管治报告.pdf
- 上海复旦张江生物医药股份有限公司2024 环境、社会及管治报告.pdf
- 中国邮政储蓄银行股份有限公司中国邮政储蓄银行2024年可持续发展报告.pdf
- 豫园股份:2024年环境、社会及管治(ESG)报告.pdf
- 南京熊猫电子股份有限公司海外监管公告 - 2024年度环境、社会及治理(ESG)报告.pdf
最近下载
- 骨科无菌术 手术区域的准备.pptx
- 《海岸带生态系统现状调查与评估技术导则 第7部分:牡蛎礁》(报批稿).pdf VIP
- GB4943-2001 信息技术设备 安全 第1部分:通用要求.pdf
- 基于舞弊风险因子理论的柏堡龙财务舞弊案例研究.pdf
- 《海岸带生态系统现状调查与评估技术导则 第5部分:珊瑚礁》(报批稿).pdf VIP
- 建筑施工安全风险辨识和分级管控指南、台账、企业安全风险分级管控清单.docx VIP
- 2025年施工员考试题库及完整答案【名师系列】.docx VIP
- 2025年施工员考试题库附完整答案【夺冠】.docx VIP
- 2025年白蚁防治员岗位职业技能资格知识考试题库(附含答案).docx
- 国际护士节护理操作技能竞赛理论题库.docx
文档评论(0)