社区
网络编程
帖子详情
关于重叠IO的疑问
xwffwx
2011-04-22 02:29:48
最近看书,重叠IO的方式。
突然发现,其实重叠IO和阻塞方式都一样需要等待。
重叠IO的操作投递之后,无论是事件激活方式还是完成例程的方式,都必须等待
凭什么说重叠IO一定比阻塞方式更有效率呢?
...全文
203
6
打赏
收藏
关于重叠IO的疑问
最近看书,重叠IO的方式。 突然发现,其实重叠IO和阻塞方式都一样需要等待。 重叠IO的操作投递之后,无论是事件激活方式还是完成例程的方式,都必须等待 凭什么说重叠IO一定比阻塞方式更有效率呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
龙行天下之Sky
2011-04-24
打赏
举报
回复
虽然重叠IO是阻塞模式,但是是系统为你做好的,当有事件的时候就会通知你,而纯阻塞的模式,是你自己做的,你只能用微软给你提供的一些功能去实现阻塞方式,而重叠IO是微软在底层为你做了专门的优化,会更好的处理
zuiyuezhou888
2011-04-23
打赏
举报
回复
这么给你举个例子吧
你接受到一个比较大的数据,收到的数据需要回复,收到的数据还需要解析
收到数据,判断是否正确数据,然后回复,然后是对接受到的数据进行解析
在这种情况下,如果你回复使用等待的话,只能等数据发送玩在对接受到的数据进行解析
表达的不是很清晰,意思就是这么个意思
zuiyuezhou888
2011-04-23
打赏
举报
回复
[Quote=引用 2 楼 xwffwx 的回复:]
我们先向系统发出IO请求,操作系统队列化各种IO请求,并在内部完成操作,当系统在处理IO请求时,我们的线程可以返回继续执行
------------------
你说的和我从书本上看到的确是一样的,但是我看代码通常都是这样写
1、事件通知方式:
当我们投递了重叠IO操作之后
WSAWaitMultipleEvents,其实就是等待IO处理完成
2、完成例程方式:
当我们投递了……
[/Quote]
使用重叠io当你调用完wsasend()的时候,程序立即返回,你可以执行wsasend()后面的代码当发送成功后,系统会以事件的方式通知你,然后你在去处理
如果单开一个线程 调用完send()后你必须等待
打个比方 你发送数据需要使用1分钟 使用重叠io 你调用完wsasend()后还可以执行剩余的代码 1分钟(大约)后你在来处理发送完后的操作
而如果使用send()这一分钟你必须等待
xwffwx
2011-04-22
打赏
举报
回复
我们先向系统发出IO请求,操作系统队列化各种IO请求,并在内部完成操作,当系统在处理IO请求时,我们的线程可以返回继续执行
------------------
你说的和我从书本上看到的确是一样的,但是我看代码通常都是这样写
1、事件通知方式:
当我们投递了重叠IO操作之后
WSAWaitMultipleEvents,其实就是等待IO处理完成
2、完成例程方式:
当我们投递了重叠IO操作之后
SleepEx或WSAWaitMultipleEvents,也是等待
因为书上讲,如果不使调用线程进入一种可警告的等待状态,完成例程根本不会被调用
在不使用的多线程的情况下,我们其实并没有去处理别的东西
就是等待完成。
这种等待和阻塞方式的等待有什么区别呢?
Eleven
2011-04-22
打赏
举报
回复
重叠模型也是一种异步IO模型。
我们知道,相对于计算机执行的其他操作而言,设备IO(文件、管道、套接字等)是比较慢的。于是在多线程结构中就考虑到采用异步的方式进行设备读写操作,即我们告诉系统对设备的读写数据,而同时应用程序的其他代码继续执行,直到获取设备操作完毕的系统通知。
在进行异步IO时,我们先向系统发出IO请求,操作系统队列化各种IO请求,并在内部完成操作,当系统在处理IO请求时,我们的线程可以返回继续执行,当操作系统处理完IO请求之后,通知我们数据操作(发送、接收、出错)完毕。
STM32F103四个通用定时器编码器模式配置
本程序包为STM32F103的四个通用定时器的编码器模式配置(寄存器和库函数两个版本都有),由于TIM2和TIM5的
IO
重叠
,这里对TIM2进行了端口重映射,两个版本的程序实测均正确。 如有
疑问
可发邮件:mark@cug.edu.cn
vc++ 串口
重叠
IO
实验
关于VC++串口
重叠
IO
通信,一直有些细节不清楚, 刚好要做一个串口通信类,调试时遇到问题了, 在使用
重叠
IO
方式打开串口后,使用
重叠
方式读取出口数据时发现read函数总是直接返回TRUE,但获得的字节数却是0,代码...
Socket
重叠
IO
不知道这个Socket
重叠
IO
这种模型是不是socket
IO
完成端口的基础,不过我感觉,学习一下这个再去学习socket
IO
完成端口是比较有好处的。 这个Scoket
重叠
IO
我以前记得看过好几次,都没看懂。一部分原因是我没能静态心...
关于
重叠
IO
(overlapped)模型中完成例程使用的两点
疑问
在完成例程的回调函数CALLBACK Complet
io
nRoutine 内,如何通过回调参数 Overlapped 来判断是哪个套接字发生了
IO
操作?我看了几个例子,好像通常是自己定义一个结构体然后把WSAOVERLAPPDE放在第一的位置,然后在回调...
网络编程(54)—— Windows下使用WSASocket基于事件进行
IO
重叠
本文主要研究下Windows下的
IO
重叠
技术。 何为
IO
重叠
?按照它的定义,在同一个线程中,我们同时向多个目标socket发送数据或者从多个socket接收数据,而我们用于传递和接收的函数未等
IO
过程结束就返回,而数据的...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章