为 Unix 程序员准备的 Windows 异步 I/O 教程

在阅读之前,我认为你已经掌握了Unix系统上的非阻塞的Socket I/O。

同样的,在Windows系统上也能够找到select这个系统调用。但是,select 在文件描述上实现的是一个O(n)的算法,他并不像现在常用的实时多路复用的 epoll,这也让使 select在高并发服务器上没了用武之地。 接下来,我们将讲述的是Windows下的高并发服务器的设计.

文章转载自开源中国社区 [http://www.oschina.net]

时间: 2024-09-20 14:03:56

为 Unix 程序员准备的 Windows 异步 I/O 教程的相关文章

程序员请注意:异步编程模式已被人注册为专利

不论是服务器端编程还是客户端编程,编程中的同步和异步对程序员来说都应该不陌生,我们经常会用同步编程来解决顺序执行问题.用异步解决并行执行问题.然而,就是这样的常见的编程模式,有人却将其申请为专利.在谷歌专利查询网站上专利公开号为"US 20140282625 A1"的专利内容就是"Asynchronous programming model for concurrent workflow scenarios",在这个专利的内容摘要描述有: 异步方式在编程中的执行过程

程序员请注意:异步编程模式已被注册专利

异步方式在编程中的执行过程是:先将包含有跟流程信息相关的全局变量和全局上下文指针存储到一个上下文结构体中.当异步函数被执行时,全局上下文指针被存储到本地变量中,当函数执行完,全局上下文指针可以从本地变量中恢复. 下面的流程图和组件图可看出这个专利中含盖的编程模式和架构.  图1 图2 专利是一把双刃剑,它能保护专利发明人的权利.鼓励更多人来发明创造,但也会因此限制其推广和普遍使用.浪费生产力.UNIX和BSD的专利之争就 是最恶劣的一个案例,Java和安卓之争也给业界带来了很多的麻烦.2004年

如何才能成为一名真正的Web程序员

web|程序|程序员|程序员 程序员可以分为很多种,像Unix程序员.Windows程序员,或是C++程序员.Delphi程序员,等等.今天我想谈的是Web程序员,我感觉目前的情况是这样,一般来说,做Unix的看不起做Windows的,做C++的看不起搞VB或是Delphi(而这两者又有些相互瞧不起)的,好像搞Web的是最惨的,处于食物链的底端.当然,这种情况到了2001年又有点变化,那就是懂Java的牛的不得了,一说起XXX懂Java.Jsp,大家就不禁有些敬仰. 我觉得这种情况很不正常,当然

程序员的进化

不久前,在互联网上出现了一篇有趣的文章,讲的是对于同一个问题,不同层次的程序员编出的Phthon代码显示出了不同的风格,代码都很简单,有趣.这篇文章的原始出处在这里,我把它整理了一下,并修改了几处错误. 编程新手 def factorial(x):       if x == 0:           return 1       else:           return x * factorial(x - 1)   print factorial(6)  一年编程经验(学Pascal的)

你好奇程序员和Unix大神们的桌面长啥样吗

2002年,我向一批程序员和Unix大神要了他们电脑桌面的截图.下面是我收到的回复. 1.Dennis Ritchie (C语言发明者,Unix联合发明者) Dennis Ritchie的电脑桌面,截图于2002年7月 附件是我收到你的邮件后,对电脑桌面的(真实)截图.我使用的电脑系统是WNT 4,这点你可能已经从左侧的桌面猜到了.桌面上大部分空间,被正在运行drawterm程序的超大窗口占据了.这个程序类似(很接近)X服务器,后者与一台Plan 9 CPU服务器相连(服务器连接是通过ISDN实

UNIX/Linux C 程序员需要掌握的七种武器

我是一名普通的软件工程师,不是什么技术大牛.这篇文章所提到的"七种武器"只是我这些年工作经验的一点体会和感悟,如果有错误的地方,还请大家指正. (一)C语言 作为一名C程序员,熟练掌握C语言是最基本的一项技能.关于如何学好C语言,以及C语言话题的讨论,网上有很多经典的文章,我就不一一列举了.在这里,我只想谈一点我个人的体会:刚毕业时,我来到一家比较大的软件公司工作,而公司的工作模式是每个人只负责一个小模块.这样工作两年后,我自认为我的C语言水平已经很高了.后来,我来到现在这家公司.由于

windows程序员进阶系列:《软件调试》之Win32堆的调试支持

    Win32堆的调试支持     为了帮助程序员及时发现堆中的问题,堆管理器提供了以下功能来辅助调试.   1:堆尾检查(Heap Tail Check) HTC,在堆尾添加额外的标记信息,用于检测堆块是否溢出. 2:释放检查(Heap Free Check)在释放堆块时进行检查,防止释放同一个堆块. 3:参数检查,对传递给堆的各种参数进行更多的检查. 4:调用时验证(Heap Validate On Call)HVC,每次调用堆函数时都对整个堆进行验证和检查. 5:堆块标记(Heap T

java程序员菜鸟进阶(九)windows下搭建SVN服务器及配置myeclipse SVN客户端

  java程序员菜鸟进阶(九)windows下搭建SVN服务器及配置myeclipse SVN客户端 分类: 学习专区 java Web    1.下载SVN最新版本安装文件,官网下载地址是:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100,选择最新发布的SVN安装文件进行下载.最新版本是Setup-Subversion-1.6.5.msi,大小7.4MB,安装SVN至我的电脑.最好使用中文路径,而且

windows下VC界面 DIY系列1----写给想要写界面的C++程序员的话

        很早就想写关于C++ UI开发的一系列博文,博客专栏刚审核通过,就马上开始刷博文,不能辜负自己的一番热血,我并不是写界面的高手,只想通过写博文提高我自己的技术积累,也顺便帮助大家解决界面开发的瓶颈. 能来到这里看我写文章, 第一说明你是windows下开发的程序员! 第二你对漂亮软件界面开发感兴趣! 第三或许你也像我当初一样对C++软件界面开发 无所适从!或许我写的不专业,但是我只想让利用C++编写客户端界面的新手程序员们对C++界面开发没有误区 . 我是从windows开发出身