Win32多线程程序设计
基本信息
- 原书名:Multithreading Applications in Win32
内容简介回到顶部↑
书籍
计算机书籍
使用线程,你可以产生高效率的服务器,建立Internet服务器扩充软件,获得多CPU系统的好处,建立精巧的COM/OLE对象,并改善程序的反应度。写出这样的软件,需要更多的理论基础,以及一本 参考手册;需要广泛了解每一件事情如何彼此相称,需要一份指南,告诉你什么可以正常运作,什么不能!通过Win32 API、Windows NT以及Windows 95都可以支持多线程程序设计,但是这个重要主题的信息却极稀有而不够详尽。
在《Win32多线程程序设计》这本书中,Jim Beveridge和Robert Wiener告诉你什么时机、什么地点、什么方法可以使用多线程。
本书主题包括:
● Internet开发范例,包括ISAPI和WinSock。
● 如何在服务器中使用线程和overlapped I/O。
● 如何在多线程环境中使用C runtime函数库和MFC.
● 以C和C++写成的各个范例程序。
● UNIX环境比较。让UNIX下的开发人员能转移到Win32.
计算机书籍
使用线程,你可以产生高效率的服务器,建立Internet服务器扩充软件,获得多CPU系统的好处,建立精巧的COM/OLE对象,并改善程序的反应度。写出这样的软件,需要更多的理论基础,以及一本 参考手册;需要广泛了解每一件事情如何彼此相称,需要一份指南,告诉你什么可以正常运作,什么不能!通过Win32 API、Windows NT以及Windows 95都可以支持多线程程序设计,但是这个重要主题的信息却极稀有而不够详尽。
在《Win32多线程程序设计》这本书中,Jim Beveridge和Robert Wiener告诉你什么时机、什么地点、什么方法可以使用多线程。
本书主题包括:
● Internet开发范例,包括ISAPI和WinSock。
● 如何在服务器中使用线程和overlapped I/O。
● 如何在多线程环境中使用C runtime函数库和MFC.
● 以C和C++写成的各个范例程序。
● UNIX环境比较。让UNIX下的开发人员能转移到Win32.
作译者回到顶部↑
本书提供作译者介绍
作者 Jim Beveridge在操作系统的研究领域中已有15年之久,从多处理器数据库到microkernel操作系统的开发,都有经验。他于Rochoester Institute of Technology 获得计算机科学学士学位。他目前受聘为Turning Point Software 公司顾问。
作者 Robert Wiener从Carnegie Mellon University获得计算机工程学士学位。他有8年的Windows应用软件开发经验,目前他正把这些经验运用于Trellix公司的MFC和ActiveX相关专题。
译者 侯捷,获得台湾清华大学动力机械硕士学位,进入Window.. << 查看详细
作者 Robert Wiener从Carnegie Mellon University获得计算机工程学士学位。他有8年的Windows应用软件开发经验,目前他正把这些经验运用于Trellix公司的MFC和ActiveX相关专题。
译者 侯捷,获得台湾清华大学动力机械硕士学位,进入Window.. << 查看详细
目录回到顶部↑
函数索引(function index) 封面里
常见问答集(frequently asked questions) vii
第一篇 上路吧,线程
第1章 为什么要"千头万绪" 3
一条曲折的路 4
与线程共枕 7
为什么最终用户也需要多线程多任务 8
win32基础 10
context switching 14
race conditions(竞争条件) 16
atomic operations(原子操作) 19
线程之间如何通讯 22
好消息与坏消息 22
第2章 线程的第一次接触 25
产生一个线程 26
使用多个线程的结果 31
核心对象(kernel objects) 36
线程结束代码(exit code) 40
结束一个线程 45
错误处理 48
常见问答集(frequently asked questions) vii
第一篇 上路吧,线程
第1章 为什么要"千头万绪" 3
一条曲折的路 4
与线程共枕 7
为什么最终用户也需要多线程多任务 8
win32基础 10
context switching 14
race conditions(竞争条件) 16
atomic operations(原子操作) 19
线程之间如何通讯 22
好消息与坏消息 22
第2章 线程的第一次接触 25
产生一个线程 26
使用多个线程的结果 31
核心对象(kernel objects) 36
线程结束代码(exit code) 40
结束一个线程 45
错误处理 48
译者序回到顶部↑
thread就是"线"。台湾计算机术语采用"绪"这个译词,"绪"就是"线"的雅称,multithread就是"多绪"。大陆计算机术语采用"线程"一词,multithread就是"多线程"。
Threads(线程)是比processes(进程)更小的执行单元,CPU的调度与时间分配皆以threads为对象。
计算机领域中早就存在threads的观念和技术,但是早期个人电脑操作系统(主要是DOS),别说multithread,连multitask, multiuser亦不可得。因此,从当时,乃至延伸至今,threads的概念和功能对许多非计算机专业科班出身者而言,属于一种"崇高而难以亲近"的位阶,对许多计算机专业科班出身者而言,却又只是"操作系统"这门课里高高在上的一个名词。
本书第一章第一句话值得玩味:"计算机工业界每有新的技术问世,人们总是不遗余力地去担忧它是不是够重要。公司行号虎视眈眈地注意其竞争对手,直到对方采用并宣扬这技术有多么重要,才开始急急赶上。不论这技术是不是真的很重要,每一个人都想尽办法让终端用户感觉真的很重要。终端用户终于真的觉得需要它了--即使他们完全不了解那是什么东西。"
threads大约就是这么一种东西吧。OS/2、Windows NT、Windows 95这类"新一代PC操作系统"初上市时,便一再强调其抢先式多任务(preemptive multitasking)的多线程(multithreaded)环境。拜强势行销之赐,霎时间线头到处飞舞,高深的计算机术语在街巷里弄之间传播了开来,颇有点 "Neural Fuzzy"洗衣机的味道。
这倒也算是好事!
搞不清楚threads是什么,对终端用户而言或许没有关系,对技术人员可就不妙。Threads绝对可以缩短程序的执行时间吗?应该尽量多产生threads来帮助程序工作吗?任何种类的程序都可以获得multithreads的好处吗?错!错!错!似是而非的观念可能会把你的程序带往更坏(而非更好)的境界。
Threads不是新东西,但它借着 Windows 的庞大装机量初次广泛进入个人电脑世界,带给个人电脑巨大的冲击。产生threads毫无困难,要让它们分工容易,而要让它们合作,那可就得花相当多的心思。Threads不一定带来好处,运用不当的话,它会在执行效率上惩罚你。
Threads是 Win32 操作系统和 Win32 程序设计不可或缺的重要环节,每一本重量级Win32程序设计书籍都不会忽略这个题目(请参考附录B)。但是这些书多半仅以一章(甚至只是一节)来介绍这个题目。不够,真的不够,我们缺乏一本兼具理论并重实际的threads专著。《Multithreading Applications in Win32》的内容兼具理论和实际,轻薄短小的身形则在大部头书当道的今天让我们心情轻松。这是一本导入性书籍,在threads专著里算是比较容易入门的。但是你必须知道,threads不可能让你轻松学习!同步控制、多线程通讯、数据一致性……样样耗费你的心神,考验你专心致志的程度。读这本书,还请你武装一下自己的精神。
对于中译本,我有以下两点说明:
1. 译本内的程序实例直接取自书附光盘。如果与英文版书面代码稍有出入,恐怕是因为作者直接在实际程序上做了点小变动而未能及时反应到书面。如果出现这种差异,我会在程序代码列表之后以译注的方式告诉你。
2. 译本保留了相当多的原文技术术语,主要是考虑本书的潜在读者层。如果不采用原文术语,可能各位反而要倒译回去半看半猜,那么译本的价值就适得其反了。许多地方我不厌其烦地在中文术语后面加上原文术语,为的也是同样的原因。
3. Multithreading非常重要。当支持多处理器(multiprocessor)的操作系统逐渐普及时,具备多处理器的个人计算机也逐渐普及。我相信,多线程程序设计是每一位技术人员都必须面对的技术。即便现在,多线程能够提高多人、多任务程序的使用者接口(UI)反应度,同样也是高阶技术人员应该追求的目标。
侯捷 新竹 1997.05.31
jjhou@jjhou.com
http://www.jjhou.com(繁体中文)
http://jjhou.csdn.net(简体中文)
Threads(线程)是比processes(进程)更小的执行单元,CPU的调度与时间分配皆以threads为对象。
计算机领域中早就存在threads的观念和技术,但是早期个人电脑操作系统(主要是DOS),别说multithread,连multitask, multiuser亦不可得。因此,从当时,乃至延伸至今,threads的概念和功能对许多非计算机专业科班出身者而言,属于一种"崇高而难以亲近"的位阶,对许多计算机专业科班出身者而言,却又只是"操作系统"这门课里高高在上的一个名词。
本书第一章第一句话值得玩味:"计算机工业界每有新的技术问世,人们总是不遗余力地去担忧它是不是够重要。公司行号虎视眈眈地注意其竞争对手,直到对方采用并宣扬这技术有多么重要,才开始急急赶上。不论这技术是不是真的很重要,每一个人都想尽办法让终端用户感觉真的很重要。终端用户终于真的觉得需要它了--即使他们完全不了解那是什么东西。"
threads大约就是这么一种东西吧。OS/2、Windows NT、Windows 95这类"新一代PC操作系统"初上市时,便一再强调其抢先式多任务(preemptive multitasking)的多线程(multithreaded)环境。拜强势行销之赐,霎时间线头到处飞舞,高深的计算机术语在街巷里弄之间传播了开来,颇有点 "Neural Fuzzy"洗衣机的味道。
这倒也算是好事!
搞不清楚threads是什么,对终端用户而言或许没有关系,对技术人员可就不妙。Threads绝对可以缩短程序的执行时间吗?应该尽量多产生threads来帮助程序工作吗?任何种类的程序都可以获得multithreads的好处吗?错!错!错!似是而非的观念可能会把你的程序带往更坏(而非更好)的境界。
Threads不是新东西,但它借着 Windows 的庞大装机量初次广泛进入个人电脑世界,带给个人电脑巨大的冲击。产生threads毫无困难,要让它们分工容易,而要让它们合作,那可就得花相当多的心思。Threads不一定带来好处,运用不当的话,它会在执行效率上惩罚你。
Threads是 Win32 操作系统和 Win32 程序设计不可或缺的重要环节,每一本重量级Win32程序设计书籍都不会忽略这个题目(请参考附录B)。但是这些书多半仅以一章(甚至只是一节)来介绍这个题目。不够,真的不够,我们缺乏一本兼具理论并重实际的threads专著。《Multithreading Applications in Win32》的内容兼具理论和实际,轻薄短小的身形则在大部头书当道的今天让我们心情轻松。这是一本导入性书籍,在threads专著里算是比较容易入门的。但是你必须知道,threads不可能让你轻松学习!同步控制、多线程通讯、数据一致性……样样耗费你的心神,考验你专心致志的程度。读这本书,还请你武装一下自己的精神。
对于中译本,我有以下两点说明:
1. 译本内的程序实例直接取自书附光盘。如果与英文版书面代码稍有出入,恐怕是因为作者直接在实际程序上做了点小变动而未能及时反应到书面。如果出现这种差异,我会在程序代码列表之后以译注的方式告诉你。
2. 译本保留了相当多的原文技术术语,主要是考虑本书的潜在读者层。如果不采用原文术语,可能各位反而要倒译回去半看半猜,那么译本的价值就适得其反了。许多地方我不厌其烦地在中文术语后面加上原文术语,为的也是同样的原因。
3. Multithreading非常重要。当支持多处理器(multiprocessor)的操作系统逐渐普及时,具备多处理器的个人计算机也逐渐普及。我相信,多线程程序设计是每一位技术人员都必须面对的技术。即便现在,多线程能够提高多人、多任务程序的使用者接口(UI)反应度,同样也是高阶技术人员应该追求的目标。
侯捷 新竹 1997.05.31
jjhou@jjhou.com
http://www.jjhou.com(繁体中文)
http://jjhou.csdn.net(简体中文)
评论交流
共有90人开贴评论 125人参与评论 86人参与打分 查看
评价等级:







发表于:2010-1-6 12:02:00
侯捷翻译的书貌似都很经典,这本也不例外。这本书不厚,看起来也很轻松。
这本书讲得并不深,但基本上涵盖了Windows多线程程序设计的方方面面。其中对Overlapped I/O讲得比较多,比Win32 System Programming那本书里面的异步IO讲得全面很多,对于C/C++/MFC多线程库也分别做了介绍。唯一不足的是,对MFC对象线程不安全问题说的还不够详细。进程间通信也只介绍了共享内存和,Pipe、Mailslot仅仅几句带过。但对同步控制讲得还是非常详细的。总体来说,本书值得一看。
这本书讲得并不深,但基本上涵盖了Windows多线程程序设计的方方面面。其中对Overlapped I/O讲得比较多,比Win32 System Programming那本书里面的异步IO讲得全面很多,对于C/C++/MFC多线程库也分别做了介绍。唯一不足的是,对MFC对象线程不安全问题说的还不够详细。进程间通信也只介绍了共享内存和,Pipe、Mailslot仅仅几句带过。但对同步控制讲得还是非常详细的。总体来说,本书值得一看。
| 我要写评论 |
| 查看所有评论交流(共90条) |








点击看大图





加载中...

