唉!偶只会select模型和线程阻断模型!
但是select模型和重叠io正是为了适应Windows消息驱动机制的需要而添加的,
重叠io比select模型使用复杂,目前用得不多,偶认为都应该掌握!
但是select模型和重叠io正是为了适应Windows消息驱动机制的需要而添加的,
重叠io比select模型使用复杂,目前用得不多,偶认为都应该掌握!
解决方案 »
- VS2010中如何给Ribbon中的ComboBox插入值
- 以odbc的方式打开excel文件,判断其中是否存在表,如果不存在则创建,为什么语句在sql server 2005里面可以执行,放到CDatabase里出错?
- OpenGL中如何进行这样的矢量运算?
- vs2003 UDPClient 的Ttl属性 编译不认识,为什么?
- 求文本批处理解决方案
- 请问,如何在widowsAPI编程中实现自定义消息?如实现sendmessage(hwnd,WM_FIRE,1,0)中的WM_FIRE,好使其在消息处理函数中能对其做相应处
- 求职的烦脑
- 如何让一个控件布满整个View?就像利用TreeView那样?
- 关于COM的边界间的调度
- Don Box 说 COM id dead?那大家不是又扑空了?ATL没用了?
- 主 题:关于文件的实时读操作执行问题
- 如何在开始菜单中的程序菜单中,添加栏位。这个栏位就是某个可执行文件的快捷方式。
我感觉:
用阻塞模型需要一个线程管理一个客户请求
用select好像不是起线程了,而是变成了管理socket数组了,一切都用 for循环 +FD_ISSET搞定
select本身是阻塞的,已后用到的send,recv都设置成了非锁定
可我不知道这样能提高多大的效率(速度)
请过来人点播点播,谢谢!
效率并不见得高,而且socket数量也有限制。用select其实也可以实现这些功能。
以微软排外的风格,select的背后不一定使用什么低效率的方法去实现呢。微软告诉我们它的模型里overlapped I/O比其他模型都要,那就没错了。原因是overlapped I/O可以不使用系统缓冲区,减少了copy操作。
而且可以使用多个缓冲区,减少了分配内存的操作,可以应用到“栈式缓冲区”具体还是看MSDN好。那本书写的仍然模糊,例子普遍性不强,没有体现overlapped I/O的优势。
以前也认为overlapped I/O是有数量限制的,但后来仔细看了completeRouting,发现可以没有限制的,还有完成端口模型,更是海量了。
奇怪那本书的作者怎么那么喜欢用event,不好用。不过我也刚看,打算写几个测试程序验证一下。去网络/通讯讨论吧,不喜欢这里闹哄哄的,什么东西都有。
可是怎样才能证明重叠io可以比select模型大幅度提升性能呢,那位高手讲讲?
在windows网络编程里有详细的描述
而且overlapped i/o好像是可以多个线程同时进行读写操作的。也就是说在上一个操作未完成的时候就可以再次操作,就是所谓“重叠”。select不可以,只能干完一件再干一件。在汇编一级上,我觉得overlapped i/o可以省许多call指令。
你说:”以前也认为overlapped I/O是有数量限制的,但后来仔细看了completeRouting,发现可以没有限制的“请问怎样才能没有限制呢。现在普遍的做法是当>64是需要再起工作者线程。你有什么好办法吗?
WSAEventSelect模型设计还挺丰满,不知道其性能和重叠io模型比较如何,请过来人给比较一下好吗?
你是怎么突破overlapped I/O是有数量限制的!快说啊!我想不通除非你不用WSAWaitForMultipleEvents 那你用的是什么呢???