c++ - 带超时的多线程面向对象套接字代码

标签 c++ sockets timeout alarm

我们有一个很好的类,它建立一个套接字连接,然后反复点击它。 如果超时,我们想抛出异常。

我想要的是每个对象的独立超时。但是,如其他帖子中所述,没有可移植套接字超时代码。

Socket Timeout in C++ Linux

我目前正在用一个信号来做这件事,但这很难看,因为只有一个指向当前对象的全局变量。这意味着此代码不能是多线程的。

有没有办法以每线程的方式建立一个计时器,以便每个对象都可以在自己的线程中运行?这似乎是最干净的方式。我可以构建一个队列,让它们都在关键部分等待,但这非常丑陋,并且会影响多线程性能(而且我不想这样做)。

最佳答案

您可以使用异步 I/O 来做到这一点。例如,使用 libeventasio .只需在同一个调度线程(I/O 服务)上启动读取操作和计时器。

关于c++ - 带超时的多线程面向对象套接字代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378584/

相关文章:

c++ - 当我尝试用 makefile 编译我的 qt 程序时它不起作用

c - 为什么即使服务器上没有运行此类服务,getaddrinfo 也会返回服务端口?

java - Socket-C服务器、Android客户端

http - GO 结构文字中的未知 http.Transport 字段 'ExpectContinueTimeout'

java - 如果服务器没有响应,超时不起作用

c++ - 使用 openGL 加速时不考虑 QChart z 值?

c++ - 此 Windows 应用程序使用什么 API/SDK?

c++ - "Normalize"使用 lambda 的 C++ 中的二维 vector

c++ - 你如何着手制作基于 tcp 的可靠 udp 协议(protocol)?

ios - 如何知道您的应用程序是事件的还是空闲的?