1 多线程基础介绍 1
多线程标准介绍 2
多线程的优点 2
改进程序结构 3
理解多线程的基本概念 3
使用64位体系结构 6
2 基本的线程程序设计 8
线程库 8
创建一个缺省的线程 9
3 线程属性 26
属性 26
4 在程序中使用同步对象 42
互斥锁的属性 43
使用互斥锁 46
条件变量属性 53
使用条件变量 56
信号量 64
读写锁属性 69
使用读写锁 71
跨进程的同步 75
不需线程库支持的进程间锁定 76
各种原语的比较 76
5 操作系统编程 78
进程创建和复制 78
创建进程——exec(2)和exit(2) 81
定时器,报警和仿真定时 82
非局部跳转语句——setjmp(3C)和longjmp(3C) 83
资源限制 83
LWPs和调度类型 83
扩展传统的信号 86
输入/输出问题 93
线程安全性 96
6 接口函数的安全性 96
接口的多线程安全性级别 97
异步信号安全函数 98
函数库的多线程安全级别 98
7 编译和调试 100
编译多线程程序 100
调试多线程程序 103
8 增强多线程程序性能的工具 106
示例:在Mandelbrot(分形)程序中使用线程机制 106
示例:用LockLint检查程序 110
示例:用LoopTool将循环并行化 113
如何找到更详细的资料 115
9 用Solaris线程库编程 116
比较POSIX线程库和Solaris线程库的API 116
Solaris线程库特有的函数 119
同样的同步函数——读写锁 121
同样的Solaris线程库函数 125
同样的同步函数——互斥锁 131
同样的同步函数——条件变量 133
同样的同步函数——信号量 135
进程间同步 137
关于fork()函数和Solaris线程的特殊问题 138
10 程序设计原则 140
重新考虑全局变量 140
线程间的同步 141
防止死锁 143
一些基本的原则 145
创建和使用线程 145
利用多处理器 148
总结 151
A 例子程序——多线程的grep 152
tgrep简介 152
B Solaris多线程的例子:barrier.C 178
C 多线程安全性级别:库接口 182