使用poll进行套接字响应超时

时间:2012-02-09 17:52:55

标签: c++ c http sockets

我有一个现有的多线程C ++程序,它使用一个套接字池进行读写。 发送方线程使用下一个可用套接字发送HTTP请求。 接收器therad轮询套接字池(使用poll()方法)并读取HTTP响应。 接收方线程如何从池的套接字中检测到可能的HTTP响应超时?

1 个答案:

答案 0 :(得分:2)

快速举例:

  1. 发送请求时,创建一个包含fd的对象,您需要的任何逻辑连接信息,以及您认为超时的绝对时间
  2. 保留按时间排序的这些对象的优先级队列,因此最快过期始终位于前面(如果所有请求都获得相同的超时,则会退化为FIFO队列)
  3. 轮询时,计算从现在到队列中第一个绝对时间的超时
  4. 如果轮询返回零(或者只是每次唤醒),获取当前时间并使队列超时超出现在超时的任何请求
  5. 当您获得成功的响应时,您还需要从队列中删除关联的对象