《C++面向对象多线程编程》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:(美)Cameron Hughes,(美)Tracey Hughes著;周良忠译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2003
  • ISBN:7115108811
  • 页数:516 页
图书介绍:本书共分13章,全面讲解构建多线程架构与增量多线程编程技术。

目录 1

第1章 C++组件简介 1

1.1 既是好消息,也是坏消息 1

1.2 面向对象方法 2

1.3 面向对象架构 2

1.4 C++组件 3

1.5 面向对象软件组件 3

1.5.1 什么是类 4

1.5.2 抽象数据类型 4

1.5.3 类作为模型 8

1.5.4 类类型 9

第2章 进程解剖 25

2.1 什么是进程 25

2.2 进程状态 28

2.3 进程优先权 34

2.4 上下文切换 35

2.5 进程关系 35

2.5.1 进程终止 39

2.5.2 同步和异步进程 39

2.6 进程映射 41

2.7 进程资源 42

2.7.1 硬件资源 43

2.7.3 软件资源 44

2.7.4 优先权与资源 44

2.7.2 数据资源 44

第3章 轻量级进程:线程 47

3.1 多线程处理 49

3.2 线程与进程的相似之处 52

3.3 线程与进程的不同之处 52

3.4 线程的优点 53

3.6 线程类型 54

3.6.1 休眠(sleeper)和单步(one-shot) 54

3.5 线程的缺点 54

3.6.2 先占工作 55

3.6.3 延迟工作 55

3.7 线程相关信息 55

3.8 线程创建 57

3.8.1 谁可以终止线程 58

3.8.2 分离线程 60

3.8.3 远程线程 60

3.9 线程堆栈 60

3.10 线程控制 61

3.10.1 临界区 61

3.10.2 挂起和恢复线程 63

3.11 线程优先权 64

3.12 线程状态 70

3.13 线程与资源 71

3.14 线程的实现模型:用户级线程 71

3.14.1 核心级线程 71

3.14.2 混合线程 71

第4章 多任务与多线程编程 73

4.1 什么是多任务编程 73

4.1.1 对话级多任务编程 74

4.1.2 进程级多任务编程 74

4.2 合作和抢占式多任务 75

4.1.3 多线程编程 75

4.2.1 合作多任务 76

4.2.2 抢占式多任务 78

4.2.3 时间片的大小 79

4.3 多处理器下的多线程 80

4.3.1 非对称多处理器处理 81

4.3.2 对称多处理器处理 81

4.3.3 具有多处理器的多线程处理模型 82

4.4 规划策略 84

4.4.1 规划策略目标 84

4.4.2 规划策略准则 85

4.4.3 轮询和FIFO规划 86

4.4.4 最短任务优先规划法 87

4.4.5 最短剩余时间规划法 88

第5章 进程间和线程间通信 89

5.1 依赖关系 89

5.1.1 通信依赖性 90

5.1.2 合作依赖性 91

5.1.3 计数线程与进程依赖性 91

5.2 进程间和线程间通信 94

5.2.1 什么是进程间通信 94

5.2.2 进程间通信类型 95

5.3 线程间通信 114

第6章 合作与同步 123

6.1 竞争条件 123

6.1.1 数据同步 127

6.1.2 硬件同步 127

6.1.3 任务同步 128

6.2 同步关系 129

6.3 进程同步机制 130

6.3.1 信号量提供钥匙 130

6.3.2 信号量类型 132

6.3.4 使用互斥量锁定防止竞争条件 136

6.3.3 自愿互斥量策略 136

6.3.5 临界区 145

6.4 避免竞争条件 147

6.5 死锁必需的条件 148

6.6 远离死锁 148

第7章 接口类与进程间通信 149

7.1 接口类详解 149

7.1.1 接口类的类型 149

7.1.2 减小参数和全局变量的数量 155

7.2 C++没有多线程处理的关键字 157

7.3 面向对象接口到管道 158

7.4 使用接口类来实现面向对象命名管道 173

7.4.1 相关客户/服务器术语 174

7.4.2 名字包含哪些内容 174

7.4.3 命名管道和iostream复合 175

7.4.4 npstream接口类 176

7.4.5 命名管道与STL istream_iterator和ostream_iterator 181

第8章 同步对象 185

8.1 初识mutex类 186

8.1.1 命名互斥量类 195

8.1.2 同步和依赖性关系(示例) 199

8.1.3 表示条件的类 206

8.1.4 等待多个事件或互斥量 213

8.1.5 通过类成员函数锁定和取消锁定 217

8.1.6 小结 219

第9章 线程处理面向对象架构 221

9.1 什么是多线程架构 221

9.2 使用多线程的常见架构 223

9.2.1 文件服务器 225

9.2.2 数据库服务器和事务服务器 227

9.2.3 应用服务器 229

9.2.4 事件驱动架构 233

9.3 黑板架构 235

9.4 途径上的不同(面向对象与过程化) 237

9.4.1 封装是关键(保护和数据隐藏) 239

9.4.2 类成员函数CREW策略 251

9.5 增量多线程处理 252

第10章 类层次和线程处理C++组件 255

10.1 抽象基类 255

10.2 具体类——理想终结者 258

10.2.1 多线程层次中的节点类 260

10.2.2 线程与容器和集合类 261

10.2.3 应用框架类 276

11.1 线程、对象和作用域 295

第11章 类行为和线程处理 295

11.1.1 连接与作用域 296

11.1.2 线程和类作用域 297

11.2 同步关系和对象成员函数 297

11.3 在多线程环境中构建和析构对象 306

11.3.1 exit()和abort() 306

11.3.2 构造函数和SS关系 307

11.3.3 析构函数与FF关系 308

11.3.4 线程集合与对象 309

11.3.5 线程与异常处理 311

11.4 线程安全函数 318

11.5 多线程环境中的不安全函数 319

11.6 在多线程架构中使用STL算法 320

第12章 测试多线程应用程序 323

12.1 软件测试的目标 323

12.1.1 分而治之(divide and conquer) 324

12.1.2 软件测试类型 326

12.1.3 对象的组件复合 327

12.1.4 成员函数访问数据组件 328

12.1.5 成员函数正确性 328

12.1.7 成员函数调用序列 329

12.1.6 对象的过渡状态 329

12.1.8 对象完整性 330

12.2 对象的测试实例 336

12.2.1 对象构建的测试实例 336

12.2.2 析构函数的测试实例 337

12.2.3 赋值的测试实例 338

12.2.4 对象派生子类 339

12.2.5 成员函数性能的测试实例 339

12.2.6 对象资源需求和测试实例 340

12.2.7 测试公有对象访问、受保护对象访问以及线程化对象访问 340

12.3.2 规划问题 341

12.3.1 开放层次问题 341

12.3 测试多线程架构的问题 341

12.4 使用常用模型和架构 342

第13章 实现并发的最后思考 345

附录A POSIX线程管理规范 349

附录B 类关系图规范 387

附录C POSIX线程管理函数 391

附录D Win32线程管理函数 415

附录E OS/2线程管理函数 439

附录F 线程和同步类(POSIX,Win32以及OS/2) 473

参考文献 503

索引 509