上海地区专业的网上书店
一次性购物满100元即可享受VIP会员价格优惠
网站地图 |登录/注册 |购物车 |会员中心 |帮助中心 |友情链接
首页 | 新书上市 | 畅销推荐 | 礼品图书 | 分类浏览 | 出版社专区 | 图书热评 | 求购登记 | 顾客留言 | 图书拾零
 
   图书搜索: 高级搜索

Win32多线程程序设计(附CD)

Win32多线程程序设计(附CD)
新书城图书编号:31397
图书ISBN:756092638X
出版时间:2004-9-1
出版社:华中科技大学出版社
作者:(美)Jim Beveridge & Robert Wiener 著,侯捷 译
市场价格:¥59.8
普通会员:¥47.84    80
VIP会员:¥44.85   75
购买商品 收藏商品  
【图书分类】
计算机图书>>软件工程
【图书简介】
使用线程,你可以产生高效率的服务器。建立Internet服务器扩充软件,获得多CPU系统的好处,建立精巧的COM/OLE对象,并改善程序的反应度。
写出这样的软件,需要更多的理论基础,以及一本参考手册;需要广泛了解每一件事情如何彼此相称;需要一份指南,告诉你什么可以正常动作,什么不能!
通过Win32 API,Windows NT以及Windows 95都可以支持多线程程序设计,但是这个重要主题的信息却极稀有而不够详尽。
在《Win32多线程程序设计》这本书中,Jim Beveridge和Robert Wiener告诉你什么时机、什么地点、什么方法可以使用多线程。
本书主题包括:
·Internet开发范例,包括ISAI和WinSock。
·如何在服务器中使用线程和overlapped I/O。
·如何在多线程环境中使用Cruntime函数库和MFC。
·以C和C++写成的各个范例程序。
·NUIX环境比较。让UNIX下的开发人员能转移到Win32。
【图书评论】
发表新的评论   
浏览Win32多线程程序设计(附CD)全部评论>>   
【图书目录】

函数索引(Function Index)封面里

常见问答集(Frequently Asked Questions) vii

FAQ 01:合作型(cooperative)多任务与抢先式(preemptive)多任务有何不同? 5
FAQ 02:我可以在Win32s中使用多个线程吗? 6
FAQ 03:线程和进程有何不同? 10
FAQ 04:线程在操作系统中携带多少"行李"? 11
FAQ 05:Context Switch是怎么发生的? 14
FAQ 06:为什么我应该调用CloseHandle()? 38
FAQ 07:为什么可以在不结束线程的情况下关闭其handle? 40
FAQ 08:如果线程还在运行而我的程序结束了,会怎样? 47
FAQ 09:什么是MTVERIFY? 48
FAQ 10:我如何得知一个核心对象是否处于激发状态? 74
FAQ 11:什么是一个被激发的对象? 75
FAQ 12:"激发"对于不同的核心对象有什么不同的意义? 76
FAQ 13:我如何在主线程中等待一个handle? 85
FAQ 14:如果线程在critical sections中停很久,会怎样? 101
FAQ 15:如果线程在critical sections中结束,会怎样? 101
FAQ 16:我如何避免死锁? 103
FAQ 17:我能够等待一个以上的critical sections吗? 106
FAQ 18:谁才拥有semaphore? 118
FAQ 19:Event object有什么用途? 120
FAQ 20:如果我对着一个event对象调用PulseEvent()
         并且没有线程正在等待,会怎样? 124
FAQ 21:什么是overlapped I/O? 150
FAQ 22:Overlapped I/O 在Windows 95上有什么限制? 150
FAQ 23:我能够以C runtime library使用overlapped I/O吗? 152
FAQ 24:Overlapped I/O总是异步地(asynchronously)执行吗? 158
FAQ 25:我应该如何为overlapped I/O产生一个event对象? 159
FAQ 26:ReadFileEx()和WriteFileEx()的优点是什么? 163
FAQ 27:一个I/O completion routine何时被调用? 163
FAQ 28:我如何把一个用户自定义数据传递给I/O completion routine? 165
FAQ 29:我如何把C++ 成员函数当做一个I/O completion routine? 170
FAQ 30:在一个高效率服务器(server)上我应该怎么进行I/O? 172
FAQ 31:为什么一个I/O completion ports是如此特殊? 175
FAQ 32:一个I/O completion port上应该安排多少个线程等待? 179
FAQ 33:为什么我不应该使用select()? 183
FAQ 34:volatile如何影响编译器的最优化操作? 198
FAQ 35:什么是Readers/Writers lock? 206
FAQ 36:一次应该锁住多少数据? 215
FAQ 37:我应该使用多线程版本的C run-time library吗? 220
FAQ 38:我如何选择一套适当的C run-time library? 221
FAQ 39:我如何使用 _beginthreadex()和 _endthreadex()? 224
FAQ 40:什么时候我应该使用 _beginthreadex()而非CreateThread()? 227
FAQ 41:我如何使用Console API取代stdio.h? 240
FAQ 42:为什么我不应该使用 _beginthread()? 248
FAQ 43:我如何以一个C++ 成员函数当做线程起始函数? 256
FAQ 44:我如何以一个成员函数当做线程起始函数? 261
FAQ 45:我如何能够阻止一个线程杀掉它自己? 282
FAQ 46:CWinApp和主线程之间有什么关系? 290
FAQ 47:我如何设定AfxBeginThread()中的pThreadClass参数? 293
FAQ 48:我如何对一个特定的线程调试? 324
FAQ 49:如果一个新的线程使用了我的DLL,我如何被告知? 370
FAQ 50:为什么我在写DLL时需要小心所谓的动态链接? 376
FAQ 51:为什么我在DllMain中启动一个线程时必须特别小心? 379
FAQ 52:我如何在DLL中设定一个thread local storage(TLS)? 389
FAQ 53:_declspec(thread)的限制是什么? 392
FAQ 54:我应该在什么时候使用多线程? 398
FAQ 55:我能够对既有程序代码进行多线程操作吗? 406
FAQ 56:我可以在我的数据库应用程序中使用多线程吗? 411

第一篇  上路吧,线程

第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
后台打印(Background Printing) 50
成功的秘诀 59

第3章  快跑与等待 61

看似闲暇却忙碌(Busy Waiting) 62
性能监视器(Performance Monitor) 66
等待一个线程的结束 72
叮咚:被激发的对象(Signaled Objects) 74
等待多个对象 77
在一个GUI程序中等待 85
提要 91

第4章  同步控制(Synchronization) 93

Critical Sections(关键区域、临界区域) 95
死锁(Deadlock) 102
哲学家进餐问题(The Dining Philosophers) 103
互斥器(Mutexes) 107
信号量(Semaphores) 115
事件(Event Objects) 120
从Worker线程中显示输出 124
Interlocked Variables 125
同步机制摘要 128

第5章  不要让线程成为脱缰野马 131

干净地终止一个线程 132
线程优先权(Thread Priority) 138
初始化一个线程 144
提要 146

第6章  Overlapped I/O,在你身后变戏法 149

Win32文件操作函数 151
被激发的File Handles 155
被激发的Event对象 159
异步过程调用(Asynchronous Procedure Calls,APCs) 163
对文件进行Overlapped I/O的缺点 171
I/O Completion Ports 172
对Sockets使用Overlapped I/O 182
提要 190

第二篇  多线程程序设计的工具与手法

第7章  数据一致性(Data Consistency) 195

认识volatile关键字 196
Referential Integrity 200
The Readers/Writers Lock 205
我需要锁定吗? 214
Lock Granularity(锁定粒度) 215
提要 216

第8章  使用C Run-time Library 219

什么是C Runtime Library多线程版本 220
选择一个多线程版本的C Runtime Library 221
以C Runtime Library启动线程 224
哪一个好:CreateThread()抑或 _beginthreadex()? 227
避免stdio.h 237
一个安全的多线程程序 240
结束进程(Process) 248
为什么你应该避免 _beginthread() 248
提要 251

第9章  使用C++ 253

处理有问题的 _beginthreadex()函数原型 253
以一个C++ 对象启动一个线程 256
建立比较安全的Critical Sections 265
建立比较安全的Locks 268
建立可互换(Interchangeable)的locks 270
异常情况(Exceptions)的处理 274
提要 274

第10章  MFC中的线程 277

在MFC中启动一个Worker线程 278
安全地使用AfxBeginThread()的传回值 282
在MFC中启动一个UI线程 288
与MFC对象共处 293
MFC的同步控制 296
MFC对于MsgWaitForMultipleObjects()的支持 300
提要 301

第11章  GDI与窗口管理 303

线程的消息队列 304
消息如何周游列国 306
GUI效率问题 311
以Worker线程完成多线程版MDI程序 311
多个上层窗口(Top Level Windows)如何是好? 313
线程之间的通讯 314
NT的影子线程(shadow thread) 316
关于"Cancel"对话框 316
锁住GDI对象 319
提要 319

第12章  调试 321

使用Windows NT 322
有计划地对付错误 322
Bench Testing 323
线程对话框 324
运转记录(Logging) 325
内存记号(Memory Trails) 327
硬件调试寄存器(Hardware Debug Registers) 328
科学方法 330
提要 333
 
第13章  进程之间的通讯(Interprocess Communication) 335

以消息队列权充数据转运中心 336
使用共享内存(Shared Memory) 345
使用指针指向共享内存(Shared Memory) 354
较高层次的进程通讯(IPC) 362
提要 364

第14章  建造 DLLs 367

DLL的通告消息(Notifications) 369
通告消息(Notifications)的问题 375
DLL进入点的依序执行(Serialization)特性 378
MFC中的DLL通告消息(Notifications) 379
喂食给Worker线程 380
线程局部存储(Thread Local Storage,TLS) 384
_declspec(thread) 390
数据的一致性 392
提要 393

第三篇  真实世界中的多线程应用程序

第15章  规划一个应用程序 397

多线程的理由 398
要线程还是要进程? 403
多线程程序的架构 404
评估既有程序代码的适用性 406
对ODBC做规划 411
第三方的函数库(Third-Party Libraries) 413
提要 413

第16章  ISAPI 415

Web服务器及其工作原理 416
ISAPI 417
IS2ODBC范例程序 420
提要 427

第17章  OLE,ActiveX,COM 429

COM的线程模型(COM Threading Models) 431
AUTOINCR范例程序 437
提要 443

附录A  MTVERIFY宏 445
附录B  更多的信息 451

 

| 会员登陆
| 最近的浏览历史
清除浏览历史>>
| 相关图书
UML系统分析设计与应用案例
JOEL说软件
软件工程
软件评测师考试大纲
企业IT体系结构
软件开发管理的实践——超越CMM5的企业案例分析
软件设计师考试考点分析与真题详解
软件设计师教程
软件工程
价值驱动的软件开发
工作时间 保密安全 订单查询及修改 支付方式 投诉 购物流程
联系我们 售后服务 配送问题 积分与优惠 建议 交易条款
·电话:021-66822880    ·邮箱:    ·客服时间( 周一 至 周六 9:00-18:00 )
Copyright © 新书城 2006-2008 , All Rights Reserved   沪ICP备06028173号