我们有一个很好的类,它建立了一个套接字连接,然后重复命中它。如果它超时,我们想抛出一个异常。
我希望每个对象都有一个独立的超时。然而,正如其他文章中所指出的,没有可移植套接字超时代码。
C++Linux 中的套接字超时
我现在用一个信号来做,但这很难看,因为有一个全局变量指向当前对象。这意味着此代码不能是多线程的。
有没有任何方法可以以每线程的方式建立计时器,这样每个对象都可以在自己的线程中运行?这似乎是最干净的方式。我可以构建一个队列,让它们都在关键部分等待,但这非常糟糕,会影响多线程性能(我无论如何都不想这样做)。
您可以通过使用异步I/O来实现这一点。例如,使用libevent
或asio
。只需在同一个调度线程(I/O服务)上启动一个读取操作和一个计时器。