Windows并发编程指南

Windows并发编程指南
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Duffy J.) ,
2010-01
版次: 1
ISBN: 9787111288206
定价: 89.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 604页
正文语种: 简体中文
原版书名: Concurrent Programming on Windows
  •   《Windows并发编程指南》详细讲述Windows并发编程的相关知识。内容分为四个部分:第一部分“概念”从高层视角介绍并发的基本概念,为读者理解并发打下基础:第二部分“机制”重点介绍了一些基础的功能、内部工作机制以及各种APl等;第三部分“技术”介绍了一些常见的编程模式、最优方法、算法,以及在编写并发软件时需要使用的各种数据结构;第四部分“系统”介绍了一些在系统架构和流程中经常出现的问题。
      《Windows并发编程指南》内容翔实,实例丰富,适合Windows开发人员、Windows测试人员;和Windows技术支持人员等参考。   杜飞(JoeDuffy),是微软公司.NET框架团队中负责并行扩展库(ParallelExtensions]的开发管、架构师和奠基人。除了编写代码和管理开发团队之外,他还致力于一些长期性和前瞻性的工作,例如支持并发安全性的语言和类型系统。他曾在通用语言运行时(CommonILanguageRuntime)团队中工作过。 对本书的赞誉
    译着序

    前言
    致谢
    作者简介
    第一部分概念
    第1章概述
    1.1为什么需要并发
    1.2程序架构与并发
    1.3并行的层次
    1.4为什么不需要并发
    1.5小结
    延伸阅读

    第2章同步与时间
    2.1程序状态的管理
    2.1.1共享状态与私有状态的区分
    2.1.2状态机与时间
    2.1.3独立性
    2.1.4不变性
    2.2同步:种类与实现技术
    2.2.1数据同步
    2.2.2协作与控制同步
    2.3小结
    延伸阅读

    第二部分机制
    第3章线程
    3.1从高层面上来看线程
    3.1.1Windows线程是什么
    3.1.2CLR线程是什么
    3.1.3显式线程操作及其替代方法
    3.2线程的诞生与消亡
    3.2.1线程的创建
    3.2.2线程终止
    3.2.3DllMain
    3.2.4线程局部存储
    3.3小结
    延伸阅读

    第4章线程的高级内容
    4.1线程的状态
    4.1.1用户态线程栈
    4.1.2内部数据结构(KTHREAD、ETHREAD和TEB)
    4.1.3上下文
    4.2线程的创建过程与终止过程
    4.2.1线程创建的具体流程
    4.2.2线程终止的具体流程
    4.3线程调度
    4.3.1线程的状态
    4.3.2优先级
    4.3.3时间片
    4.3.4优先级与时间片调整
    4.3.5睡眠与退让
    4.3.6挂起
    4.3.7关联性:优先在某个CPU上运行
    4.4小结
    延伸阅读

    第5章Windows内核同步机制
    5.1基础知识:触发和等待
    5.1.1为什么要使用内核对象
    5.1.2在非托管代码中执行等待操作
    5.1.3托管代码
    5.1.4异步过程调用
    5.2内核对象的使用
    5.2.1互斥体
    5.2.2信号量
    5.2.3互斥体/信号量使用示例:阻塞/有界的队列
    5.2.4自动重置事件和手动重置事件
    5.2.5等待定时器
    5.2.6触发对象与自动等待
    5.2.7内核对象的调试
    5.3小结
    延伸阅读

    第6章数据同步与控制同步
    6.1互斥
    6.1.1Win32临界区
    6.1.2CLR锁
    6.2读/写锁(RWL)
    6.2.1WindowsVista中的轻量级读/写锁
    6.2.2.NEI框架中的轻量级读/写锁
    6.2.3.NET框架中原来的读/写锁
    6.3条件变量
    6.3.1WindowsVista条件变量
    6.3.2.NET框架的Monitor
    6.3.3被守护区域
    6.4小结
    延伸阅读

    第7章线程池
    7.1线程池的基本知识
    7.1.1三种方式:WindowsVista、Windows遗留代码以及CLR
    7.1.2通用功能
    7.2Windows线程池
    7.2.1WindowsVista线程池
    7.2.2遗留的Win32线程池
    7.3CLR线程池
    7.3.1工作项
    7.3.2I/O完成端口
    7.3.3定时器
    7.3.4注册等待
    7.3.5记住(再次提醒):你并不拥有这些线程
    7.3.6线程池的线程管理
    7.3.7调试
    7.3.8案例分析:优先级分层以及在线程池之上的隔离性
    7.4在使用线程池时的性能
    7.5小结
    延伸阅读

    第8章异步编程模型
    8.1异步编程模型(APM)
    8.1.1汇集:四种方式
    8.1.2实现IAsyncResult
    8.1.3在.NET框架的哪些地方使用了APM
    8.1.4ASP.NET异步页
    8.2基于事件的异步模式
    8.2.1基础知识
    8.2.2支持取消
    8.2.3支持进度报告以及增量结果
    8.2.4在.NET框架的哪些地方将使用EAP
    8.3小结
    延伸阅读

    第9章纤程
    9.1纤程简介优点与缺点
    9.2纤程的使用
    9.2.1创建新的纤程
    9.2.2将线程转换为纤程
    9.2.3判断线程是否为纤程
    9.2.4纤程间的切换
    9.2.5删除纤程
    9.2.6切换当前线程的示例
    9.3与纤程相关的其他主题
    9.3.1纤程局部存储
    9.3.2线程关联性
    9.3.3案例分析:纤程与CLR
    9.4构建用户态的调度器
    9.4.1实现
    9.4.2关于栈阻塞与无栈阻塞
    9.5小结
    延伸阅读

    第三部分技术
    第10章内存模型与无锁编程
    10.1内存加载与存储等操作的重新排序
    10.1.1实际运行的顺序并非总是编写的顺序
    10.1.2将临界域作为栅栏
    10.1.3数据依赖性及其对重排的影响
    10.2硬件原子性
    10.2.1普通加载指令和存储指令的原子性
    10.2.2互锁操作
    10.3内存一致性模型
    10.3.1硬件内存模型
    10.3.2内存栅栏
    10.3.3.NET内存模型
    10.3.4无锁编程
    10.4低锁代码的示例
    10.4.1延迟初始化与双重检查锁定
    10.4.2无阻塞栈和ABA问题
    10.4.3重新回顾Dekker的算法
    10.5小结
    延伸阅读

    第11章并发的危害
    11.1正确性危害
    11.1.1数据竞争
    11.1.2递归与重入
    11.1.3锁与进程关闭
    11.2活跃性危害
    11.2.1死锁
    11.2.2遗失的唤醒
    11.2.3活锁
    11.2.4锁护送效应
    11.2.5“蜂拥”现象
    11.2.6两步舞
    11.2.7优先级反转与饥饿
    11.3小结
    延伸阅读

    第12章并行容器
    12.1细粒度锁定
    12.1.1数组
    12.1.2FIFO队列
    12.1.3链表
    12.1.4字典(散列表)
    12.2无锁
    12.2.1无锁FIFO队列
    12.2.2工作密迁队列
    12.3协作式容器
    12.3.1生产者/消费者数据结构
    12.3.2通过栅栏来分阶段计算
    12.4小结
    延伸阅读

    第13章数据并行与任务并行
    13.1数据并行
    13.2任务并行
    13.2.1分支/合并算法
    13.2.2数据流并行(Future抽象与Promise抽象)
    13.2.3递归
    13.2.4流水线
    13.2.5查找
    13.3基于消息的并行
    13.4一些共同问题
    13.4.1并发的异常
    13.4.2取消
    13.5小结
    延伸阅读

    第14章性能与可伸缩性
    14.1并行硬件架构
    14.1.1SMP、CMP与HT
    14.1.2超标量执行
    14.1.3内存的层次结构
    14.1.4VisualStudio中的性能分析工具
    14.2加速比:并行代码与串行代码
    14.2.1决定“采用并行”
    14.2.2测量并行带来的性能提升
    14.2.3Amdahl定律
    12.2.4关键路径以及负载不均衡
    14.2.5垃圾收集与可伸缩性
    14.3自旋等待
    14.3.1如何在Windows上正确地自旋
    14.3.2纯自旋锁
    14.3.3Mellor-Crummey-Scott(MCS)锁
    14.4小结
    延伸阅读

    第四部分系统
    第15章输入与输出
    15.1重叠I/O
    15.1.1重叠对象
    15.1.2Win32异步:I/O
    15.1.3.NET框架的异步I/O
    15.2I/O取消
    15.2.1当前线程的异步I/O取消
    15.2.2其他线程上的同步I/O取消
    15.2.3任意线程的异步I/O取消
    15.3小结
    延伸阅读

    第16章图形用户界面
    16.1GUI线程模型
    16.1.1单线程套间(STA)
    16.1.2响应度:它是什么
    16.2.NET异步GUI功能
    16.2.1.NET的GUI框架
    16.2.2同步上下文
    16.2.3异步操作
    16.2.4一个方便的类:BackgroundWorker
    16.3小结
    延伸阅读

    第五部分附录
    附录A为.NET并发程序设计可重用的库
    附录B.NET的并行扩展
  • 内容简介:
      《Windows并发编程指南》详细讲述Windows并发编程的相关知识。内容分为四个部分:第一部分“概念”从高层视角介绍并发的基本概念,为读者理解并发打下基础:第二部分“机制”重点介绍了一些基础的功能、内部工作机制以及各种APl等;第三部分“技术”介绍了一些常见的编程模式、最优方法、算法,以及在编写并发软件时需要使用的各种数据结构;第四部分“系统”介绍了一些在系统架构和流程中经常出现的问题。
      《Windows并发编程指南》内容翔实,实例丰富,适合Windows开发人员、Windows测试人员;和Windows技术支持人员等参考。
  • 作者简介:
      杜飞(JoeDuffy),是微软公司.NET框架团队中负责并行扩展库(ParallelExtensions]的开发管、架构师和奠基人。除了编写代码和管理开发团队之外,他还致力于一些长期性和前瞻性的工作,例如支持并发安全性的语言和类型系统。他曾在通用语言运行时(CommonILanguageRuntime)团队中工作过。
  • 目录:
    对本书的赞誉
    译着序

    前言
    致谢
    作者简介
    第一部分概念
    第1章概述
    1.1为什么需要并发
    1.2程序架构与并发
    1.3并行的层次
    1.4为什么不需要并发
    1.5小结
    延伸阅读

    第2章同步与时间
    2.1程序状态的管理
    2.1.1共享状态与私有状态的区分
    2.1.2状态机与时间
    2.1.3独立性
    2.1.4不变性
    2.2同步:种类与实现技术
    2.2.1数据同步
    2.2.2协作与控制同步
    2.3小结
    延伸阅读

    第二部分机制
    第3章线程
    3.1从高层面上来看线程
    3.1.1Windows线程是什么
    3.1.2CLR线程是什么
    3.1.3显式线程操作及其替代方法
    3.2线程的诞生与消亡
    3.2.1线程的创建
    3.2.2线程终止
    3.2.3DllMain
    3.2.4线程局部存储
    3.3小结
    延伸阅读

    第4章线程的高级内容
    4.1线程的状态
    4.1.1用户态线程栈
    4.1.2内部数据结构(KTHREAD、ETHREAD和TEB)
    4.1.3上下文
    4.2线程的创建过程与终止过程
    4.2.1线程创建的具体流程
    4.2.2线程终止的具体流程
    4.3线程调度
    4.3.1线程的状态
    4.3.2优先级
    4.3.3时间片
    4.3.4优先级与时间片调整
    4.3.5睡眠与退让
    4.3.6挂起
    4.3.7关联性:优先在某个CPU上运行
    4.4小结
    延伸阅读

    第5章Windows内核同步机制
    5.1基础知识:触发和等待
    5.1.1为什么要使用内核对象
    5.1.2在非托管代码中执行等待操作
    5.1.3托管代码
    5.1.4异步过程调用
    5.2内核对象的使用
    5.2.1互斥体
    5.2.2信号量
    5.2.3互斥体/信号量使用示例:阻塞/有界的队列
    5.2.4自动重置事件和手动重置事件
    5.2.5等待定时器
    5.2.6触发对象与自动等待
    5.2.7内核对象的调试
    5.3小结
    延伸阅读

    第6章数据同步与控制同步
    6.1互斥
    6.1.1Win32临界区
    6.1.2CLR锁
    6.2读/写锁(RWL)
    6.2.1WindowsVista中的轻量级读/写锁
    6.2.2.NEI框架中的轻量级读/写锁
    6.2.3.NET框架中原来的读/写锁
    6.3条件变量
    6.3.1WindowsVista条件变量
    6.3.2.NET框架的Monitor
    6.3.3被守护区域
    6.4小结
    延伸阅读

    第7章线程池
    7.1线程池的基本知识
    7.1.1三种方式:WindowsVista、Windows遗留代码以及CLR
    7.1.2通用功能
    7.2Windows线程池
    7.2.1WindowsVista线程池
    7.2.2遗留的Win32线程池
    7.3CLR线程池
    7.3.1工作项
    7.3.2I/O完成端口
    7.3.3定时器
    7.3.4注册等待
    7.3.5记住(再次提醒):你并不拥有这些线程
    7.3.6线程池的线程管理
    7.3.7调试
    7.3.8案例分析:优先级分层以及在线程池之上的隔离性
    7.4在使用线程池时的性能
    7.5小结
    延伸阅读

    第8章异步编程模型
    8.1异步编程模型(APM)
    8.1.1汇集:四种方式
    8.1.2实现IAsyncResult
    8.1.3在.NET框架的哪些地方使用了APM
    8.1.4ASP.NET异步页
    8.2基于事件的异步模式
    8.2.1基础知识
    8.2.2支持取消
    8.2.3支持进度报告以及增量结果
    8.2.4在.NET框架的哪些地方将使用EAP
    8.3小结
    延伸阅读

    第9章纤程
    9.1纤程简介优点与缺点
    9.2纤程的使用
    9.2.1创建新的纤程
    9.2.2将线程转换为纤程
    9.2.3判断线程是否为纤程
    9.2.4纤程间的切换
    9.2.5删除纤程
    9.2.6切换当前线程的示例
    9.3与纤程相关的其他主题
    9.3.1纤程局部存储
    9.3.2线程关联性
    9.3.3案例分析:纤程与CLR
    9.4构建用户态的调度器
    9.4.1实现
    9.4.2关于栈阻塞与无栈阻塞
    9.5小结
    延伸阅读

    第三部分技术
    第10章内存模型与无锁编程
    10.1内存加载与存储等操作的重新排序
    10.1.1实际运行的顺序并非总是编写的顺序
    10.1.2将临界域作为栅栏
    10.1.3数据依赖性及其对重排的影响
    10.2硬件原子性
    10.2.1普通加载指令和存储指令的原子性
    10.2.2互锁操作
    10.3内存一致性模型
    10.3.1硬件内存模型
    10.3.2内存栅栏
    10.3.3.NET内存模型
    10.3.4无锁编程
    10.4低锁代码的示例
    10.4.1延迟初始化与双重检查锁定
    10.4.2无阻塞栈和ABA问题
    10.4.3重新回顾Dekker的算法
    10.5小结
    延伸阅读

    第11章并发的危害
    11.1正确性危害
    11.1.1数据竞争
    11.1.2递归与重入
    11.1.3锁与进程关闭
    11.2活跃性危害
    11.2.1死锁
    11.2.2遗失的唤醒
    11.2.3活锁
    11.2.4锁护送效应
    11.2.5“蜂拥”现象
    11.2.6两步舞
    11.2.7优先级反转与饥饿
    11.3小结
    延伸阅读

    第12章并行容器
    12.1细粒度锁定
    12.1.1数组
    12.1.2FIFO队列
    12.1.3链表
    12.1.4字典(散列表)
    12.2无锁
    12.2.1无锁FIFO队列
    12.2.2工作密迁队列
    12.3协作式容器
    12.3.1生产者/消费者数据结构
    12.3.2通过栅栏来分阶段计算
    12.4小结
    延伸阅读

    第13章数据并行与任务并行
    13.1数据并行
    13.2任务并行
    13.2.1分支/合并算法
    13.2.2数据流并行(Future抽象与Promise抽象)
    13.2.3递归
    13.2.4流水线
    13.2.5查找
    13.3基于消息的并行
    13.4一些共同问题
    13.4.1并发的异常
    13.4.2取消
    13.5小结
    延伸阅读

    第14章性能与可伸缩性
    14.1并行硬件架构
    14.1.1SMP、CMP与HT
    14.1.2超标量执行
    14.1.3内存的层次结构
    14.1.4VisualStudio中的性能分析工具
    14.2加速比:并行代码与串行代码
    14.2.1决定“采用并行”
    14.2.2测量并行带来的性能提升
    14.2.3Amdahl定律
    12.2.4关键路径以及负载不均衡
    14.2.5垃圾收集与可伸缩性
    14.3自旋等待
    14.3.1如何在Windows上正确地自旋
    14.3.2纯自旋锁
    14.3.3Mellor-Crummey-Scott(MCS)锁
    14.4小结
    延伸阅读

    第四部分系统
    第15章输入与输出
    15.1重叠I/O
    15.1.1重叠对象
    15.1.2Win32异步:I/O
    15.1.3.NET框架的异步I/O
    15.2I/O取消
    15.2.1当前线程的异步I/O取消
    15.2.2其他线程上的同步I/O取消
    15.2.3任意线程的异步I/O取消
    15.3小结
    延伸阅读

    第16章图形用户界面
    16.1GUI线程模型
    16.1.1单线程套间(STA)
    16.1.2响应度:它是什么
    16.2.NET异步GUI功能
    16.2.1.NET的GUI框架
    16.2.2同步上下文
    16.2.3异步操作
    16.2.4一个方便的类:BackgroundWorker
    16.3小结
    延伸阅读

    第五部分附录
    附录A为.NET并发程序设计可重用的库
    附录B.NET的并行扩展
查看详情