首页
社区
课程
招聘
[求助]超时设置COMMTIMEOUTS的问题
2006-7-5 15:44 7136

[求助]超时设置COMMTIMEOUTS的问题

2006-7-5 15:44
7136
我在使用COMMTIMEOUTS 结构体设置超时,出现了这样一个问题:

1.如果读超时设置太短,GetOverlappedResult很快就会返回.
2.读超时设置太长,在某些情况下(比如退出),想激活GetOverlappedResult就需要等上很长一段时间.

请问如何在这两者之间取得平衡???
或者有什么办法能立即激活GetOverlappedResult这个函数的???

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 1852
活跃值: (504)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
北极星2003 25 2006-7-6 12:20
2
0
提供几种思路,仅供参考:
(1)const int T = 1000 ;
while ( GetOverlappedResult ( ..., T, false) )
{
// 这样你的等待时间就以T为单位
// 如果在等待若干次以后不想再等待,那么可以在这里SetEvent(hEvent)
...
}
...

(2) 可等待记时器
CreateWaitableTimer
SetWaitableTimer

(3) 从另外一个线程来控制hEvent,使用SetEvent(hEvent)
不过会增加额外的开销
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
masmprogra 2006-7-6 14:14
3
0
最初由 北极星2003 发布
提供几种思路,仅供参考:
(1)const int T = 1000 ;
while ( GetOverlappedResult ( ..., T, false) )
{
// 这样你的等待时间就以T为单位
........


谢谢版主提供的思路,我准备用第三种方法.
游客
登录 | 注册 方可回帖
返回