欢迎来到天天文库
浏览记录
ID:34559404
大小:627.52 KB
页数:25页
时间:2019-03-07
《windows 2000系统编程05》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、下载第5章文件I/O很少有刚刚听到的事情,就被认可。如果有些事情突然降临,我们中的大多数就会陷入困境。不久前,我经历了使我认真考虑的事情。作为咨询业务的一部分,我到国内不同地方,并举办关于编程的技术讲座。有一次,我在客户的现场开设讲座时,一个参加讲座的年轻女士进来告诉我由于耳聋,所以有两名手语翻译与她坐在一起。过去,我与外国学生一起工作,他们通常只有一个翻译,所以我感到奇怪为什么她需要两个翻译。我很快明白了,其原因是手语有两种共同的形式。一种形式,通常称作聋哑字母表,需要手指一个字母一个字母地拼写每个字。更方便的方法是美国手语(ASL
2、),用手势表示整个字—那么,某个手势表示“喝水”,而另外的手势表示“快乐”。显然,ASL比聋哑字母表更好使用。当我询问其中一个翻译,是否使用ASL时,女士告诉我,他们不能过多地使用它,因为很多技术术语,ASL的手势不能表示。在超负荷前,每个翻译持续大约一个小时做手语翻译,所以一个翻译工作时,另一个翻译在休息。想到这个学生(顺便说一下,她在课堂上做得相当好)。她必须忍受整整四天的课程,一个字母一个字母地拼写全部内容,这真令人惊讶。尽管我的耳还不聋,但我的听力有点困难。我的妻子帕特,在看一个特别的电视广告节目时,总是在偷偷地笑。节目讲的是
3、一对老夫妇在餐厅,广播员说:“无论去哪里,老人都带着他的助听器。”侍者向他们介绍特色食品后,老人转向他的妻子问:“他说了什么?”其实老人的“助听器”是他的妻子。显然地,我的妻子想到我有时与电视中的老人很相同。我的听力不象以前那样好,这是事实。但是,我注意到我的大部分听力损失是由好打听而不是由吵闹引起的。如果我坐在一个安静的房间里,我能听得到任何事情,而在拥挤的餐厅里我就几乎什么也听不见。我想,当试图偷听和挑选不同的谈话时,我的脑子听不进任何东西的。另一方面,随机的噪声似乎在扼杀我的听力,所以或许我的好打听的理论是错的。尽管如此,我猜想
4、,专注于单一的声音会对我帮助很大。Windows(及许多其他的现代操作系统)的优点之一是可以传送许多同时进行的谈话。这个能力使网络服务器在其他事情之中也是可行的。如果运作像电话一样,Web几乎不会如此的流行,是吧?若如此,你也许试图在AltaVista搜索,而由于有些人也在搜索,该线路大概是占线。在第3章中,已经看到,多进程和线程可以使计算机看起来像同时地做许多事情。当你想做不同的事情时,真棒。而你想要反复做同一件事情时(像提供Web页),会发生什么呢?是的,你仍然可以使用线程,但也许会发现用这种方法而陷入问题。148Windows2
5、000系统编程下载5.1为什么异步I/O假设要设计一个Web服务器。每一次客户请求网页,就创建一个新线程,且线程处理该请求,的确如此运作。不过,创建线程在系统资源方面稍微有些昂贵。另外,可以创建多少线程,有一些实际的限制。是的,对于小型服务器来说,这不是问题。而大型Web站可以同时获得成千上万的请求。用共享负载的线程池,服务于这些请求,也许是个好主意,即为异步I/O的目的之一。要同时处理多重的I/O资源时,就出现另外的问题。假设编写终端程序,需要读取来自串口和键盘数据方法,而互相并不等待。而要立即对任何输入反应,答案还是异步I/O。在
6、处理各种形式的I/O前,弄懂Windows怎样处理文件和设备I/O,是个好主意。如果熟悉CreateFile及其使用,可以向前跳到本章的5.3节“使用线程”。5.2回顾文件I/O如果时常要打开一个文件,就使用一些库子程序(例如,fopen)。多数语言提供非常方便的高级方式操作文件。然而,有时必须在操作系统级别直接打开文件,而绕过更高级别的处理。也许要这样做的理由是执行一些类型的异步I/O。用来打开文件的系统命令是CreateFile。这也许是所有API命令的最差命名。CreateFile也许实际上在磁盘上创建文件。另一方面,也许没有创
7、建文件。它依赖传送给该命令的标志。CreateFile的更好名字应该是CreateFileHandle,因为这才是它真正所做的。创建文件句柄,可以用于文件操作。也许文件已经存在,或许该命令创建文件。CreateFile给出几个参数(见表5-1)。当然,必须提供文件名。还必须规定,要怎样访问文件(读、写或既读又写),如果允许共享该文件和安全属性的话。其次,规定两组标志。第一组标志告知该命令是否应当创建文件,或仅仅打开现有的文件。第二组标志设置各种选项,并告知若Windows创建文件,该文件应当有何属性,最后的参数是指向模板文件的句柄。如
8、果提供创建文件的句柄和命令,则新文件具有与模板文件相同的属性。CreateFile真正有趣的参数是第二组标志。这些标志设置许多有趣的选项(见表5-2)。当要关闭它或者规定重叠访问时,可以要求系统删除文件(实现异步I/O的
此文档下载收益归作者所有