登录 注册
当前位置:主页 > 资源下载 > 10 > 多线程编程指南详尽阐述了线程标准、线程同步以及多线程编程原则等内容

多线程编程指南详尽阐述了线程标准、线程同步以及多线程编程原则等内容

  • 更新:2024-10-21 09:00:01
  • 大小:1.33MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:网络攻防 - 安全技术
  • 格式:ZIP

资源介绍

目录 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 包括 .......................................................................................... 178 定义_REENTRANT 或_POSIX_C_SOURCE .................................................................................. 179 使用libthread 或libpthread 链接..................................................................................... 179 与POSIX 信号的-lrt 链接.................................................................................................... 181 将原有模块与新模块链接...................................................................................................... 181 备用线程库....................................................................................................................................... 181 调试多线程程序............................................................................................................................... 181 多线程程序中常见的疏忽性问题......................................................................................... 181 使用TNF 实用程序跟踪和调试............................................................................................ 182 使用truss ................................................................................................................................. 182 使用mdb ..................................................................................................................................... 182 使用dbx ..................................................................................................................................... 183 8 Solaris 线程编程...............................................................................................................................185 比较Solaris 线程和POSIX 线程的API ....................................................................................... 185 API 的主要差异........................................................................................................................ 185 函数比较表............................................................................................................................... 186 Solaris 线程的独有函数.................................................................................................................. 189 暂停执行线程............................................................................................................................ 190 继续执行暂停的线程............................................................................................................... 191 目录 8 多线程编程指南• 2006 年10 月 相似的同步函数-读写锁............................................................................................................. 192 初始化读写锁............................................................................................................................ 192 获取读锁................................................................................................................................... 194 尝试获取读锁............................................................................................................................ 194 获取写锁................................................................................................................................... 195 尝试获取写锁............................................................................................................................ 196 解除锁定读写锁....................................................................................................................... 196 销毁读写锁的状态................................................................................................................... 197 相似的Solaris 线程函数................................................................................................................. 199 创建线程................................................................................................................................... 199 获取最小栈大小....................................................................................................................... 201 获取线程标识符....................................................................................................................... 202 停止执行线程............................................................................................................................ 202 向线程发送信号....................................................................................................................... 203 访问调用线程的信号掩码...................................................................................................... 203 终止线程................................................................................................................................... 204 等待线程终止............................................................................................................................ 204 创建线程特定的数据键.......................................................................................................... 206 设置线程特定的数据值.......................................................................................................... 207 获取线程特定的数据值.......................................................................................................... 208 设置线程的优先级................................................................................................................... 208 获取线程的优先级................................................................................................................... 210 相似的同步函数-互斥锁............................................................................................................. 210 初始化互斥锁............................................................................................................................ 210 销毁互斥锁............................................................................................................................... 213 获取互斥锁............................................................................................................................... 213 释放互斥锁............................................................................................................................... 214 尝试获取互斥锁....................................................................................................................... 214 相似的同步函数:条件变量......................................................................................................... 215 初始化条件变量....................................................................................................................... 215 销毁条件变量............................................................................................................................ 216 等待条件................................................................................................................................... 217 等待绝对时间............................................................................................................................ 218 等待时间间隔............................................................................................................................ 218 解除阻塞一个线程................................................................................................................... 219 解除阻塞所有线程................................................................................................................... 220 目录 9 相似的同步函数:信号.................................................................................................................. 220 初始化信号............................................................................................................................... 220 增加信号................................................................................................................................... 222 基于信号计数阻塞................................................................................................................... 222 减小信号计数............................................................................................................................ 223 销毁信号状态............................................................................................................................ 224 跨进程边界同步............................................................................................................................... 224 生成方和使用者问题示例...................................................................................................... 224 fork() 和Solaris 线程的特殊问题................................................................................................ 227 9 编程原则........................................................................................................................................... 229 重新考虑全局变量.......................................................................................................................... 229 提供静态局部变量.......................................................................................................................... 230 同步线程........................................................................................................................................... 231 单线程策略232 可重复执行函数232 避免死锁234 与调用相关的死锁 235 锁定原则235 线程代码的一些基本原则236 创建和使用线程 236 使用多处理器237 基础体系结