我需要在基于I/O完成端口(IOCP)的应用程序中添加定时器支持.我想避免使用特定的线程来管理计时器.
在Linux上,您可以创建一个通过文件描述符提供过期通知的计时器(请参阅timerfd.h man),因此如果您的应用程序基于epoll,那么将它用于epoll非常棒.
在Windows上,您可以使用"waitable timers"和异步过程调用(ACP)(请参阅http://msdn.microsoft.com/en-us/library/ms686898(v=VS.85).aspx)
如果您有兴趣,kqueue(BSD,Mac OS)默认支持计时器(请参阅EVFILT_TIMER).
使用I/O完成端口,我们必须使用支持重叠I/O的objets.那么,IOCP有这样的计时器吗?
最好的祝福,
Cédrics
我在这里对多线程感到非常困惑:(我正在阅读关于C#Async/Await关键字.我经常读到,通过使用这个异步功能,代码被执行"非阻塞".人们将代码示例分为两类" IO-Bound"和"CPU绑定" - 我执行io-bound时我不应该使用线程,因为该线程只会等待..
我不明白......如果我不想让用户等待操作,我必须在另一个线程上执行该操作,对吧?
如果我使用Threadpool,一个"Thread"-class,delegate.BeginInvoke或TPL的实例 - 每个异步执行都在另一个线程上完成.(有或没有回调)