前言 1
第1章 线程编程基础知识 1
1.1 进程与线程 1
1.1.1 进程与线程的概念 1
目录 1
1.1.2 进程与线程的比较 2
1.1.3 为什么用线程而不用进程 2
1.2 直观理解进程和线程 3
1.2.1 进程选项卡 3
1.2.2 各个进程的详细说明 6
1.2.3 性能选项卡 8
1.2.4 木马中的线程 8
1.3 线程和同步 9
1.3.1 互斥体对象 10
1.3.2 信号对象 10
1.4 多线程程序编写起步 11
1.3.3 事件对象 11
1.3.4 排斥区对象 11
1.4.1 利用Win32 API的线程编程技术 12
1.4.2 利用MFC进行多线程编程 13
1.5 多线程的性能 16
1.5.1 计算问题的类型 16
1.5.2 多线程设计的目标 17
1.5.3 基于I/O的任务 19
1.5.4 基于CPU的任务 20
1.5.5 Windows 95和Windows NT之间的比较 20
1.5.6 什么时候采用多线程 20
小结 21
习题 22
第2章 进入多线程世界 23
2.1 入门实例——多线程的简单应用 23
2.1.1 程序运行一览 23
2.1.2 编译和运行 25
2.1.3 代码分析 28
2.2 提高实例——文件复制 30
2.2.1 程序运行一览 30
2.2.2 新建工程并构建初始界面 31
2.2.3 构建基本的文件复制程序 32
2.2.4 文件复制程序的改进 37
小结 44
习题 45
第3章 多进程编程 46
3.1 入门实例——进程查看器 46
3.1.1 程序运行一览 46
3.1.2 实现步骤与代码分析 47
3.2 基本理论 56
3.2.1 进程管理 56
3.2.2 进程函数描述 58
3.2.3 进程通信 60
3.2.4 管道 61
3.2.5 剪贴板传输 64
3.3 提高实例——进程通信 66
小结 74
习题 75
第4章 用Win32 API进行多线程程序设计 76
4.1 入门实例——UI多线程 76
4.1.1 程序运行一览 76
4.1.2 实现步骤与代码分析 77
4.2 基本理论 88
4.2.1 临界区 88
4.2.2 互斥量 91
4.2.3 事件 95
7.1.1 程序运行一览 1 97
4.3 提高实例——实现多种经典算法同时排序 99
4.3.1 程序运行一览 100
4.3.3 具体实现 101
4.3.2 设计思路 101
小结 116
习题 116
5.1 入门实例——多线程画线 117
5.1.1 程序运行一览 117
第5章 使用MFC进行多线程程序设计 117
5.1.2 创建MFC工程 118
5.1.3 实现步骤与代码分析 121
5.2 基本理论 124
5.2.1 MFC多线程函数概述 124
5.2.2 MFC下多线程的同步 127
5.3 提高实例——哲学家进餐问题 131
5.3.1 功能介绍及程序运行一览 132
5.3.2 实现步骤 133
5.3.3 代码分析 133
小结 142
习题 143
6.1.1 功能描述 144
6.1 入门实例——简单服务器、客户机通信程序 144
第6章 多线程技术在网络编程中的应用 144
6.1.2 程序实现及代码分析 146
6.2 基本理论 155
6.2.1 基本概念 155
6.2.2 WinSock编程中用到的结构 156
6.2.3 WinSock的主要API函数 157
6.2.4 WinSock的编程模型 159
6.3 提高实例——实现HTTP Server服务器 161
6.3.1 HTTP协议简介 161
6.3.2 HTTP Server的具体实现 165
小结 195
习题 196
第7章 多线程在图形图像中的应用 197
7.1 入门实例——Windows XP启动模拟程序 197
7.1.3 具体实现 198
7.1.2 设计思路 198
7.2.1 位图编程 203
7.2 基本理论 203
7.2.2 OpenGL编程 207
7.3 提高实例——小球赛跑程序 212
7.3.1 程序运行一览 212
7.3.2 设计思路 214
7.3.3 具体实现 214
小结 225
习题 225
第8章 多线程在具体项目中的应用 226
8.1 安全文件传输中应用多线程 226
8.1.1 OpenSSH简介 226
8.1.2 OpenSSH内幕 227
8.1.3 配置OpenSSH服务器 229
8.1.4 SSH命令简介 229
8.1.6 运行环境 231
8.1.5 无人值守的OpenSSH 231
8.1.7 设计思路 232
8.1.8 具体实现 232
8.2 多线程在XML和数据库中的应用 237
8.2.1 系统简介 237
8.2.2 接收监听端上传的日志 237
8.2.3 处理日志 238
8.2.4 日志查询 240
8.2.5 设计思路 241
8.2.6 日志查询模块的具体实现 241
8.2.7 XML解释模块的具体实现 248
8.2.8 日志入库模块的具体实现 256
8.2.9 DLL导出函数介绍 260
小结 261
习题 261