首页 新闻 会员 周边

MFC中,能不能建立一个线程让它每隔一段时间执行一次?

0
[已解决问题] 解决于 2014-05-22 10:59

我在工作中遇到这样一个环境:我需要实时的检查IO状态,但是考虑到使用定时器可能会影响效率,所以打算用线程来实现。但是这样的话,我的IO检查代码就要写在OnTimer()里,在线程创建的时候打开定时器(SetTimer)而线程函数ThreadProc()里是没有内容的。我想问这样合理吗?

我也想过把定时器在线程处理函数ThreadProc()中打开,但是这是SetTimer的第一个参数我就不知道写什么了。

有没有同事遇到过这种环境的?有没有更好的解决办法?总觉得ThreadProc函数里只有一句return 0不踏实。

IT-famer的主页 IT-famer | 菜鸟二级 | 园豆:206
提问于:2014-05-15 19:52
< >
分享
最佳答案
0

针对 IO 来说,更好的方式就是使用 BindIoCompletionCallback(_WIN32_WINNT >= 0x0500) 或 CreateThreadpoolIo(_WIN32_WINNT >= 0x0600)。

奖励园豆:5
Launcher | 高人七级 |园豆:45045 | 2014-05-16 08:55

线程池的话,是不是相当于每个IO口用线程来检测?

IT-famer | 园豆:206 (菜鸟二级) | 2014-05-16 13:58

@IT-famer: 如果你使用我提供的 API 的话,IO完成后会调用你提供的回调方法。

Launcher | 园豆:45045 (高人七级) | 2014-05-19 08:56

@Launcher: 能不能详细说一下或者给个源代码看看呢,谢谢大神

IT-famer | 园豆:206 (菜鸟二级) | 2014-05-19 14:15
Launcher | 园豆:45045 (高人七级) | 2014-05-19 14:49
其他回答(2)
0

实现过相机定时拍图, 空余时间使线程直接sleep掉了

grassofsky | 园豆:342 (菜鸟二级) | 2014-05-15 21:24

您说的这个办法倒是可以减轻负担,但是我的这种情况,IO状态要实时显示,所以线程开闭间隔时间很短,几乎是毫秒级的,也就是说每个几毫秒就要执行一次OnTimer。

支持(0) 反对(0) IT-famer | 园豆:206 (菜鸟二级) | 2014-05-16 13:57
0

创建一个线程,不干活的时候让线程sleep就行了,不用频繁启线程

aspnet | 园豆:79 (初学一级) | 2014-05-21 11:08

这些线程是做监听用的,所以要保持常开。

支持(0) 反对(0) IT-famer | 园豆:206 (菜鸟二级) | 2014-05-22 11:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册