标签: c++ sockets timeout alarm
我们有一个很好的类,它建立一个套接字连接,然后反复点击它。 如果它超时,我们想抛出异常。
我想要的是每个对象的独立超时。但是,如其他帖子中所述,没有可移植套接字超时代码。
Socket Timeout in C++ Linux
我目前正在使用一个信号,但这很难看,因为有一个指向当前对象的全局变量。这意味着此代码不能是多线程的。
有没有办法以每个线程的方式建立一个计时器,以便每个对象可以在自己的线程中运行?这似乎是最干净的方式。我可以构建一个队列,以便他们都在一个关键部分等待,但这非常难看并会影响多线程性能(我不想反正)。
答案 0 :(得分:1)
您可以使用异步I / O执行此操作。例如,使用libevent或asio。只需在同一个调度线程(I / O服务)上启动读操作和计时器。
libevent
asio