我在工作中遇到这样一个环境:我需要实时的检查IO状态,但是考虑到使用定时器可能会影响效率,所以打算用线程来实现。但是这样的话,我的IO检查代码就要写在OnTimer()里,在线程创建的时候打开定时器(SetTimer)而线程函数ThreadProc()里是没有内容的。我想问这样合理吗?
我也想过把定时器在线程处理函数ThreadProc()中打开,但是这是SetTimer的第一个参数我就不知道写什么了。
有没有同事遇到过这种环境的?有没有更好的解决办法?总觉得ThreadProc函数里只有一句return 0不踏实。
针对 IO 来说,更好的方式就是使用 BindIoCompletionCallback(_WIN32_WINNT >= 0x0500) 或 CreateThreadpoolIo(_WIN32_WINNT >= 0x0600)。
线程池的话,是不是相当于每个IO口用线程来检测?
@IT-famer: 如果你使用我提供的 API 的话,IO完成后会调用你提供的回调方法。
@Launcher: 能不能详细说一下或者给个源代码看看呢,谢谢大神
实现过相机定时拍图, 空余时间使线程直接sleep掉了
您说的这个办法倒是可以减轻负担,但是我的这种情况,IO状态要实时显示,所以线程开闭间隔时间很短,几乎是毫秒级的,也就是说每个几毫秒就要执行一次OnTimer。