文件名称:多线程编程指南(系统描述了线程标准 线程同步 多线程编程原则 等)
文件大小:1.33MB
文件格式:ZIP
更新时间:2011-09-23 08:21:05
多线程 线程标准 线程同步 多线程编程原则
目录
1 多线程基础介绍15
定义多线程术语15
符合多线程标准16
多线程的益处17
提高应用程序的响应 17
有效使用多处理器17
改进程序结构17
占用较少的系统资源17
结合线程和RPC(远程过程调用)18
多线程概念18
并发性和并行性 18
多线程结构一览 18
线程调度19
线程取消19
线程同步20
使用64 位体系结构20
2 基本线程编程23
线程库................................................................................................................................................. 23
创建缺省线程.............................................................................................................................. 23
等待线程终止.............................................................................................................................. 25
简单线程的示例......................................................................................................................... 26
分离线程..................................................................................................................................... 28
为线程特定数据创建键............................................................................................................ 29
删除线程特定数据键................................................................................................................. 30
3
设置线程特定数据..................................................................................................................... 31
获取线程特定数据..................................................................................................................... 32
获取线程标识符......................................................................................................................... 36
比较线程ID ................................................................................................................................ 36
初始化线程................................................................................................................................. 37
停止执行线程.............................................................................................................................. 38
设置线程的优先级..................................................................................................................... 38
获取线程的优先级..................................................................................................................... 39
向线程发送信号......................................................................................................................... 40
访问调用线程的信号掩码........................................................................................................ 41
安全地Fork ................................................................................................................................. 42
终止线程..................................................................................................................................... 42
结束.............................................................................................................................................. 43
取消线程..................................................................................................................................... 43
取消线程..................................................................................................................................... 45
启用或禁用取消功能................................................................................................................. 45
设置取消类型.............................................................................................................................. 46
创建取消点................................................................................................................................. 47
将处理程序推送到栈上............................................................................................................ 48
从栈中弹出处理程序................................................................................................................. 48
3 线程属性..............................................................................................................................................51
属性对象............................................................................................................................................. 51
初始化属性................................................................................................................................. 52
销毁属性..................................................................................................................................... 53
设置分离状态.............................................................................................................................. 54
获取分离状态.............................................................................................................................. 55
设置栈溢出保护区大小............................................................................................................ 56
获取栈溢出保护区大小............................................................................................................ 57
设置范围..................................................................................................................................... 58
获取范围..................................................................................................................................... 59
设置线程并行级别..................................................................................................................... 60
获取线程并行级别..................................................................................................................... 60
设置调度策略.............................................................................................................................. 61
获取调度策略.............................................................................................................................. 62
目录
4 多线程编程指南• 2006 年10 月
设置继承的调度策略................................................................................................................. 63
获取继承的调度策略................................................................................................................. 64
设置调度参数.............................................................................................................................. 64
获取调度参数.............................................................................................................................. 65
设置栈大小................................................................................................................................. 67
获取栈大小................................................................................................................................. 68
关于栈.......................................................................................................................................... 69
设置栈地址和大小..................................................................................................................... 71
获取栈地址和大小..................................................................................................................... 73
4 用同步对象编程.................................................................................................................................75
互斥锁属性......................................................................................................................................... 76
初始化互斥锁属性对象............................................................................................................ 77
销毁互斥锁属性对象................................................................................................................. 78
设置互斥锁的范围..................................................................................................................... 79
获取互斥锁的范围..................................................................................................................... 80
设置互斥锁类型的属性............................................................................................................ 80
获取互斥锁的类型属性............................................................................................................ 82
设置互斥锁属性的协议............................................................................................................ 82
获取互斥锁属性的协议............................................................................................................ 84
设置互斥锁属性的优先级上限............................................................................................... 85
获取互斥锁属性的优先级上限............................................................................................... 86
设置互斥锁的优先级上限........................................................................................................ 87
获取互斥锁的优先级上限........................................................................................................ 88
设置互斥锁的强健属性............................................................................................................ 89
获取互斥锁的强健属性............................................................................................................ 90
使用互斥锁......................................................................................................................................... 91
初始化互斥锁.............................................................................................................................. 92
使互斥保持一致......................................................................................................................... 93
锁定互斥锁................................................................................................................................. 94
解除锁定互斥锁......................................................................................................................... 96
使用非阻塞互斥锁锁定............................................................................................................ 97
销毁互斥锁................................................................................................................................. 98
互斥锁定的代码示例................................................................................................................. 99
条件变量属性.................................................................................................................................. 105
目录
5
初始化条件变量属性............................................................................................................... 106
删除条件变量属性................................................................................................................... 106
设置条件变量的范围............................................................................................................... 107
获取条件变量的范围............................................................................................................... 108
使用条件变量.................................................................................................................................. 109
初始化条件变量....................................................................................................................... 109
基于条件变量阻塞................................................................................................................... 111
解除阻塞一个线程................................................................................................................... 112
在指定的时间之前阻塞.......................................................................................................... 114
在指定的时间间隔内阻塞...................................................................................................... 116
解除阻塞所有线程................................................................................................................... 117
销毁条件变量状态................................................................................................................... 119
唤醒丢失问题............................................................................................................................ 120
生成方和使用者问题............................................................................................................... 120
使用信号进行同步.......................................................................................................................... 124
命名信号和未命名信号.......................................................................................................... 125
计数信号量概述....................................................................................................................... 125
初始化信号............................................................................................................................... 126
增加信号................................................................................................................................... 128
基于信号计数进行阻塞.......................................................................................................... 129
减小信号计数............................................................................................................................ 129
销毁信号状态............................................................................................................................ 130
使用信号时的生成方和使用者问题.................................................................................... 131
读写锁属性....................................................................................................................................... 133
初始化读写锁属性................................................................................................................... 134
销毁读写锁属性....................................................................................................................... 134
设置读写锁属性....................................................................................................................... 135
获取读写锁属性....................................................................................................................... 136
使用读写锁....................................................................................................................................... 136
初始化读写锁............................................................................................................................ 137
获取读写锁中的读锁............................................................................................................... 138
读取非阻塞读写锁中的锁...................................................................................................... 139
写入读写锁中的锁................................................................................................................... 139
写入非阻塞读写锁中的锁...................................................................................................... 140
解除锁定读写锁....................................................................................................................... 140
销毁读写锁............................................................................................................................... 141
目录
6 多线程编程指南• 2006 年10 月
跨进程边界同步............................................................................................................................... 142
生成方和使用者问题示例...................................................................................................... 142
比较元语........................................................................................................................................... 145
5 使用Solaris 软件编程......................................................................................................................147
进程创建中的fork 问题................................................................................................................. 147
Fork-One 模型........................................................................................................................... 148
Fork-all 模型.............................................................................................................................. 151
选择正确的Fork ....................................................................................................................... 151
进程创建:exec 和exit 问题....................................................................................................... 152
计时器、报警与剖析...................................................................................................................... 152
每LWP POSIX 计时器............................................................................................................. 152
每线程报警............................................................................................................................... 153
剖析多线程程序....................................................................................................................... 153
非本地转向:setjmp 和longjmp .................................................................................................. 154
资源限制........................................................................................................................................... 154
LWP 和调度类................................................................................................................................. 154
分时调度................................................................................................................................... 155
实时调度................................................................................................................................... 155
公平共享调度程序................................................................................................................... 155
固定优先级调度....................................................................................................................... 156
扩展传统信号.................................................................................................................................. 156
同步信号................................................................................................................................... 157
异步信号................................................................................................................................... 157
延续语义................................................................................................................................... 157
对信号执行的操作................................................................................................................... 158
定向于线程的信号................................................................................................................... 160
完成语义................................................................................................................................... 162
信号处理程序和异步信号安全............................................................................................. 163
中断对条件变量的等待.......................................................................................................... 165
I/O 问题............................................................................................................................................. 166
I/O 作为远程过程调用............................................................................................................ 167
人为的异步性............................................................................................................................ 167
异步I/O ..................................................................................................................................... 167
共享的I/O 和新的I/O 系统调用.......................................................................................... 169
目录
7
getc 和putc 的替代项............................................................................................................. 169
6 安全和不安全的接口...................................................................................................................... 171
线程安全........................................................................................................................................... 171
MT接口安全级别............................................................................................................................ 173
不安全接口的可重复执行函数............................................................................................. 174
异步信号安全函数.......................................................................................................................... 175
库的MT安全级别........................................................................................................................... 175
不安全库................................................................................................................................... 176
7 编译和调试....................................................................................................................................... 177
编译多线程应用程序...................................................................................................................... 177
为编译做准备............................................................................................................................ 177
选择Solaris 语义或POSIX 语义............................................................................................ 178
包括