资料下载网
首页 计算机 考试教辅
win32多线程程序设计_Jim Beveridge著_侯捷译 pdf电子书免费下载,百度云
首页 > 计算机 > 计算机F > win32多线程程序设计_Jim Beveridge著_侯捷译 pdf电子书免费下载,百度云

《win32多线程程序设计_Jim Beveridge著_侯捷译》pdf电子书免费下载


下载方式一:

百度网盘下载地址:https://pan.baidu.com/s/13ksE9ufbBimAhUhOyL_esw
百度网盘密码:1111

下载方式二:

http://ziliaoshare.cn/Download/af_124388_pd_win32DXCCXSJ_JimBeveridgeZ_HJY.zip

 


win32多线程程序设计_Jim Beveridge著_侯捷译

作者:empty

页数:475

出版社:empty

《win32多线程程序设计_Jim Beveridge著_侯捷译》介绍

序thread就是“线”, 台湾计算机术语采用“绪”这个译词, “绪”就是“线”就是“多线程”.Threads(线程) 是比processes(进程) 更小的执行单元, CPU的调度与时间分配皆以thread:为对象,计算机领域中早就存在threads的观念和技术, 但是早期个人电脑操作系统(主要是DOS) , 别说muli thread.连multitask, mult l user亦不可得, 网此, 从当时,乃至延伸至今, threads的概急和功能对许多非计算机专业科班出身者而, 属于一种“崇高而堆以亲近”的位阶,对许多计算机专业科班出身者而告,却义只是“操作系统”这门课里高高在上的一个名词.本书第一章第一句话值得玩味:“计算机工业界每有新的技术间世,人们总是不遗余力地去担忧它是不是够重要,公司行号虎视忱地注意其竞争对于,直到对方采用井直扬这技术有多么重要,才开始急急赶上,不论这技术是不是真的很重要,每一个人都想尽办祛让终端用户感觉真的很重要。终端用户终于真的觉得需要它了一--即他他们完全不了解那是什么东西,threads大约就是这么一种东西吧.OS/2、WindowsNT, Windows 95这类“新一代PC操作系统”初上市时, 便一再强调其抢先式任务(preempt ie muts king)的多线程(sult i threaded) 环境, 拜强势行销之赐, 墨时间线头到处飞舞, 高深的

译序计算机术语在街巷里开之间传播了开来, 所有点“Neural Fuzzy”洗衣机的味道.这也料是好事!对于中译本,我有下两点说明:摘不清楚threads是什么, 对终端用户面言或许没有关系, 对技术人员可就不, Thr ends絕对可以缩短程序的执行时间吗?应该尽量密产生thir als米助程序工作吗?任何种类的程序都可以获得muli h reads的好处吗?错!!错!似是而非的观念可能会把你的程序带往更坏(而非更好)的境界,Threads不址新东西, 但它借着Windows的庞大装机量韧次广泛进人个人电脑世界, 带给个人电脑巨大的冲击, 产生threads毫无困难, 要让它们分工容易,面要让它们介作, 那可就得花相当多的心思, Threads不·定带来好处, 运用不当的话,它会在执行效率上罚你Threads是Win 32作系统和Win 32程序设计不可成缺的重要环节, 每一本重量Win 32程序设计书籍都不会略这个烟日(请参考附录B) , 但是这些书多半仅以一章(甚至只是一节)来介绍这个题目,不够,真的不够,我们缺乏一本兼具理论并重实际的threads专著.CMu i threading Applications in Win 32》的向容兼具理论和实际,薄短小的身形则在大部头书当道的今天让我们心情轻松,这是一本与人性书籍, 在threads专著里算是比较容易人门的。但是你必须知道, threads不可能计你轻松学!旧步控制、多线通讯、数据·致件……样样耗费你的心神,考脸你专心致志的程度,读这本书,还请你武装一下自己的精神。1.译本内的程序实例直接取自书附光盘,如果与英文版书面代码稍有出人,恐怕是因为作者直换在实际程序上做了点小变动面未能及时反应到书面-如果出现这种差异,我会在程序代码列表之后以译注的方式告诉你,2.译本保留了相当多的原文技术术语,主要是考虑本书的游在读者层,如果不采用原文术语,可能各位反而要倒译回去半看半猜,那么译本的价值腻适得其反了,许多地方我不厌其烦地在中文术语后面加上原文术语,为的也是同样的原因.Mult thread ng非常重要, 当支持多处理器(multiprocessor) 的操作系统逐渐普及时,具备多处理器的个人计算机也逐渐普及,我相信,多线程程序设计是每一位技术人员都必员面对的技术,即便现在,多线程能够提高多人,多任务程序的使用者接(UI)反应度,网样也是高阶技术人员应该追求的有标:

作者序1992年, 我参加了第二届Microsoft Professional Developers Conference, 当时,五年过去了, 好几版WindowsNT间世了, 我食是深入此书, 煎是了解1992这本书的读者禅很广, Win 16和Unix上的程序开发者散转移到WIn 32, 成是这是一本可以让你上手实验“Win 32线程”的书, 我描述了基础观念, 如果如果你对那些只挑软子吃而意规略困难部分的书籍感到绝望,我希望本许密程序员对于线程是既期待怕受物害, 1Inix的人笑它, 因为进程如果你开发的是服务器(server) 产品, 你就应该对线程深深在乎, 因为1/O如果你开发的是Wcb产品, 么I IS(Internet Information Server) 的扩充软本书第一篇的程序是以C完成的,C++的分量很少.从第二篇开始我们就往Win 32首次对大量混盒展示, 这是一个重大的事件, 其中有许多蛊魅的新技术第一次亮相, 观众不断地对展示的东西喝彩, 当我看到这些新技术时, 我身上U in ix的那一部分说“时候到了”, 而Windows 3.1的娜一部分则是高呼“哈利路亚”,年的那场盛宴之中我的了解是多么贫乏,我听过许多“睿智”的话,比如“为MDI程序的每一个窗准备一个线程 之类, 事实上根本是错误的, 有些技术(诸如overlapped i/O) 很明显地被曲解了,当我钻研此书时,我发现许多其他书籍和文章从头到尾描述了各式各样的Win 32函数, 却很少着在如何使用它们, 或如何搭配共信函使用, 某些函整,例如Msg Wait For Multiple Objects 0, 是Win 32程序的运转中心, 却几平没有任何范例程序正确使用过它,在我所发现的文件给了我太多的败之后,我决定尽可能以实务导向的方式完成此书, 如此来, 你就能看到挪些Win 32两数一起合作的情景,有经验的Win 32程序开发者, 都是我的对象, 你会发现一些不曾看过的间答, 例如“为什么_begin thread ex 0真的很重要”等等, 程序范例从基本层面到同步机制,到多栽程COM和IS APT应用程序, 都有.你需要更理论性的知识,你还得多看点其他资料,找程的大部分问题都已经被Dijkstra和Court ols那样的人在25年前就解决掉了, 他们的论文直到今天还适用.书能够让你绝地逢生,某些章节是经过了长时间的实验,多篇相关文章(来自杂志、期刊、Microsoft KnowledgeBase) 的阅读、众多源代码的剖析之后, 萃炼而得, 你“程与C runtime幽数中以及MFC的关”这种主题, 我保证你会从中获得许多闪亮的宝石,(process) 看起来就已经不错了。Win 16的人也嘲笑它, 因为Peck Mess nge() 也作得很好嘛!我写这本书时首先认识的一个关键问题就是:如果有任何一个人在乎所谓的线和,追为的是什么?com pie tion port:使用它, 1/ 0 complet on ports是准一能够搭配win32 sockets或named pipes完成高效率VO的方法, 请你“随”到第6章看个明白(用“走”字显得太慢了),件也是靠多线程DLLs完成的, 这种技术的背景观念散布于整本书, 而第16章则告诉你如何旌行那些观念。C++移动了, 一如我在第9章所说, C++是人势所趋, 不论你是否使用MFC,加果你的C++根基不稳,我希望你特别注意一下第9章.

凡是C/C++程序开发人员, 并有Windows程序设计经验(不论是Win l 6或法过本书之后,你特有能力分析哪是线程可以发挥效用的地方,哪里是你Unix程序员将会发现, Win 32和Unix之间有着基础观念上的差异,本书的第一篇—“上路吧,线程”,为你建立必要的基础,包括线程的启动本书的第二篇、“多线程程序设计的工具与策略”, 介绍C runtime函数库本书的第三篇,“真实世界中的多线程应用程序”,读论如何组织一个程序,整本书中我用了许多文本模式程序来示范观念,有些人不喜欢这种选择,但面对这些范例程序,我使用了多方的错调检验,虽然这些检验导致程序代码详注:Jeff ity的书已出至第3版, 名为Adva need Windows Third Edition.它Win 32) , 企图对线程、核心对象、overlapped I/O in Win 32获得更坚实之认识者,本书就是针对你们而写的, 本书谈的是AFI函数的使用、你会遭遇的问题, 以及Windows架构对其用途的影响,应该躲闪它们的地方,几乎整本书的重点都放在产生真正可用的程序上,神秘手法以及不安全的设计已经被我排除了。和结束,核心对象、激发和未激发状态的点义,同机制及具用迹,有经验的Win 32程序员或许可以跳过这一部分, 不过第6章所讨论的主题(诸如//Ocompletion ports) , 是非常重要的题目, 而且总的来说, 其文件非常贫乏。和MFC对线程的支持、如何在USER和GDI的限制之下施行多线程、如何产生一个DLL.如何对多线程程序调试:这一部分的许多信息来自于我们的研究和实际经验、使它有效支持多线程,本篇示范两个真实世界中的应用软件,第一个是个free threaded OLE automation server, 第二个是ISAPI程序, 是个I IS(In tem netInfarmation Scr ver) 扩充软件, 示范如何和JET数据库交读,我相信一个50~100行的程序绝对比一个有着消息循环、资源文件、窗函数……井且超过750行的Wind iws程序更能够集中读者的光, 读这本书你不会看到太多与用户界面相美的东西,我相信本书的范例程序以其目前的形志对你会比较有帮助.看起来有些杂乱,但是错误检验对于生产一个真正的应用软件很重要,对于一本书也很重要·有网样东西是任意时候你尝试写任意Win 32程序时应该要准备的.第一样东西是Microsoft Developer Network.其光盘内含不可置信的巨量技术资料, 包悟Mia rosoft KnowledgeBase.编译器和Win3z的光整手册, 以及MicrosoftSystems Journal.第二样东西是Jeffrey Richter的一本卓越书籍:AdvancedWindowsNT:The Develops rs Guide to the Win32APIforWindnwsNT 3.5 andWindows 95(Microsoft Press, 1995) , 虽然其中遗漏了某些NT 3.51的新东西,但其他方面非常有价值,的小标题写着:for Windows 95&WindowsNT 4.0.


《win32多线程程序设计_Jim Beveridge著_侯捷译》目录

Msg Wait Fr Multiple bjects . 86

Msg Wait Fr Multiple bject sEx. 164

pn nFi ln Mapping.351

Pst Thread Mesg ge. 315

ReadFile.153

ReadFile Fx-.-16.3

Release Mutex.-111

Release Semaphre.119

Reply Message.309

Resume Thread.145

Set Thread Pririty.-140

Sleep Ex.163

Suspend Thread.14G

T rm in at eTh rad-.-132

TIs Allc.386

TIs Free.388

Tis Gt valu .387

TIs SetValue.386

Unmap View f File.353

Get verlapped k equ lt.100

Wait Fr Multiple bj ct s.81

Wait Fr Multiple bject sEx.164

Wait Fr Single bj t72

Wait Fr Sin glu bject Ex.163

WriteFile.153

WriteFile Ex.163

Create File.

Create File Mapping.

Create l Cmpletin Prt

Create Mut x.

Create Semaphre.

Creat sT hr and.

Del t Critical Sect n

Disable Thread Library Calls . 374

DII Main.3G9

and thread250

_end thread ex.227

F nter Critical Sect ian-.97

Ext Thread.45

File l Cmpletin Rutine . 164

Get ExitCde Thread . 41

Gt Qu ugdCmpictinSttug.170

Get Std Handle.238

Get Thread Pririty.141

In ii alize Criti alS ctin-.06

Interlcked Dec re munt.126

Interlcked Exchange.127

Interlcked increment-.u anu.126

Multithreading Applicatins in Win 32

一条曲折的路.

与线程共枕.-.-.

为什么最缝用户也需要线程客任务.

Win 32基础.

Cntext Switching.-

Racc Cnd h tins(竞争条件) .

Atmic peratins(原子操作) .

线程之间如何通讯.

好消息与坏消息mmm.

线程的第一次核触.

产生一个线程.

使用多个线极的精果.

核心对象(Kem el bjects) .

线程结束代码(ExitCde) .

结束一个线程.

错谈处理.

后台打印(Backgrund Printing) .

成功的秘.

看似闲暇却忙碌(Busy Waiting.

性能监视器(Perfrmance MnItr.

等待一个线程的结束.

叮咚:被激发的对象(Signaled bjects) .

等待多个对象.m-.

在一个GUI程序中等待mm

Cr tie nl Sectins(关键区城, 临界区域.5

死锁(Deadlck) .102

哲学家进问题(The Dining Philsphers) . 103

互斤器(Mutexes) . . 107

信号量(Semaphres) .115

事件(Ev mnt lje as.120

从Wrker线程中显示输出.124

Interlcked Variables.125

同步机制摘耍.128

干净地终止一个线程.132

线程优先权(Thr cad Prin vity) .138

初始化一个线程.144

提要.146

verlapped I/, 在你身后变戏法.142

Win 32文件操作两数.m151

被激发的FileHandles.155

被激发的Event对象.-.159

异步过程调用(Asynchrnus Prcedure Calls, A PCs) . 163

对文件进行verlapped I/的职点.171

对Sckets使用verlapped/.

提要.

认识vlatile关键字.

Referential Integrity.

The Readers/Writers Lck i uaa.a.

我需要锁定吗?.

Lck Granularity(锁定粒度) .

提耍.

什么是C Runtime Library多线程版本.

第二篇

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

第7章数据一致性(Data Cnsistency) .

第8章使用C Run-me Librar.

第9章

选择一个多线程版本的C Runtime Librar.221

以C Runtime Library启动线程.224

哪一个好:Create Thread 抑或_begin thread ex(?. 227

识免stdi.h.237

一个安全的多线程序.a.240

结束进程(Prcess) .248

为什么你应城避免_begin th rad.248

提要-.251

使用C++.253

处理有问跑的_lrg i threat lex 函数原型.253

以一个C++对象启动一个线程.256

建立比较安全的Critical Sectins.265

建立比较安全的Lck.-.2bX

建立可互换(interchangeable) 的lcks.270

异常情况(Exceptins) 的处理.274

提要.274

第10章MFC中的线程.

第11章GB I与窗管理.303

第12章

在MFC中启动一个Wrker线程.

安全地使用Afx BegIn Thread 的传国值.282

在MFC中启动一个UI线程.288

与MFC对象共处.293

MPC的同步控制mrm.296

MFC对于Msg Wait Fr Multiple bj cts 0的支持.m.300

提要.30l

线程的清息队.304

消息如何周游列国.306

以Wrker线程完成多线程版MDI程序.311

多个上层窗(TpLevel Windws) 如何是好?.313

线程之间的通讯.ta.314

NT的影子线程(shadw thie ad】.316

关于“Cancel”对话框.316

锁住GDI对象.319

提要.319

调试.321

使用Wins luw sNT.322

有计划地对付错误.322

Bench Te sing.323

线程对话框.324

运转记录(Lgging) .325

内存记号(Memry Trails) .327

硬件调试寄存器(Hardware Debug Reg ters.328

科平方法.44444444.330

第13章进程之间的通讯(Interprcess Cmmunica in) . 335

第14章建造DLL.367

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

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

第16章

第17章LE, Act x, CM.429

以消息队列权充数据转运中心.

.336

使用费享内存(Shared Memry) . . 345

使用指针指向共享内存(Shared Memry) . 354

较高层次的进程通讯(IPC) .362

握..364

DLL的通告消息(Ntificatins) .369

通告消息(Ntificatins) 的问题-.1.:.4.375

DLL进人点的依序执行(Scri alizatin) 特性.378

MFC中的DLL通告消息(Ntificatins) .379

哈度给Wrker线程.380

线程局部存储(Thrn d Lcal Strage, TLS) . 384

_decl spec(thread) .390

数据的一致性m.392

提要.-.393

多线程的理由.398

要线程还是要进?.403

多线程程序的架构.404

.评估既有程序代码的适用性.406

对DBC傲规划.411

第三方的函数库(Third-Party Libraries) .413

提要.413

ISAPI.415

Web服务器及其工作原理.416

18API.r.417

Is2DBC范例程序.1x420

提要.427

CM的线程模型(CM Threading Mdels) .

AUT INCR节例程序.437

常见问答集

FrequentlyAskedQuestins

FAQ 01:合作型(cperative) 多任务与抢先式(preemptive) 多任务有何不同?.5

FAQ 02:我可以在Win32s中使用多个线程吗?.6

FAQ 03:线程和进程有何不同?.r.10

FAQ 04:线程在操作系统中携带多少“行本”?.11

FAQ05:CntextSwitch是怎么发生的?.14

FAQ 06:为什么我应语调用ClseHandle 0?.38

FAQ 07:为什么可以在不结束线程的情况下关闭其handle?.40

FAQ 08:如果线程还在运行面我的程序结束了, 合怎样?atm it nn. 47

FAQ 09:什么是MT VERIFY?.48

FAQ 10:我如何得知一个核心对象是否处于激发状态?.74

FAQ 11:什么是一个被散发的对象?.75

FAQ 12:“激发”对于不同的核心对象有什么不同的意义?.76

FAQ 13:我如何在主线程中等待一个handle?.85

FAQ 14:如果线程在crl tical sectins中停很久, 会怎样?.101

FAQ 15:如果线程在critical sectins中结束, 会怎样?.101

FAQ 16:我如何免皙?.103

FAQ 17:我能够等一个以上的critical sectins码?.106

FAQ 18:谁才拥有seun apha e?.118

FAQ19:Eventhject有什么用途?.120

FAQ 20:如果我对着一个event对象调用P use Event()

FAQ 21:什么是verlapped I/?.

FAQ22:verlappedI在Windws95上有什么限制?

FAQ 23; 我服够以C runtime library使用verlapped I/Q吗?.

FAQ24:verlappedI/总是异步地(asynehrnusly)执行吗?.

FAQ 25:我应该如何为verlapped I严生一个ven t对象?.

FAQ26ReadFileEx 0和WriteFilE x) 的优点是什么?.

FAQ 27:一个/ cmpletin rutine何时被调.

FAQ 28:我如何把一个用尸日定义数传递I/ cmpletin f ut in e?. 165

FAQ 29:我如何把C++成员函数当做一个I/ cmpletin rutine ?. 70

FAQ 30; 在一个高效率服务器(server) 上我应该怎么进行/?rm-in m, 172

FAQ 31:为什么一个I/ cmpletin prts是如此特殊?

FAQ 32:一个/ cmpletin prt上应该安排多少个线程等待?

FAQ 33:为什么我不应该便用select 0.1R3

FAQ 34; vl axil e如何影响编译器的最优化操作?.198

FAQ 35:什么是Readers/Writers lck?.206

FAQ 36:一次应该锁住多少数据?.215

FAQ 37:

计算机


python
AI人工智能
javascript
计算机网络/服务器
数据库技术
计算机F

考试教辅


考研考博
英语四六级

沪ICP备18046276号-5