我是 c-ares 库的新手,我想扩展下面的示例,以便我可以同时等待多个查询完成。这是一个工作示例:
void processChannelBlocking(Channel &c) {
int nfds, count;
fd_set readers, writers;
struct timeval tv;
while (c.isRunning()) {
FD_ZERO(&readers);
FD_ZERO(&writers);
tv.tv_sec = std::numeric_limits<typeof(tv.tv_sec)>::max();
tv.tv_usec = std::numeric_limits<typeof(tv.tv_usec)>::max();
nfds = c.updateFDs(&readers, &writers);
if (nfds == 0) break;
c.updateTimeout(&tv);
count = select(nfds, &readers, &writers, NULL, &tv);
c.process(&readers, &writers);
std::cout<<"loop"<<std::endl;
}
}
updateFDs()
获取频道的 FDupdateTimeout()
将超时降低到通道所需的时间process()
是ares_process()
我可以很容易地设置select()
等待多个频道,但是当select()
返回时,我怎么知道要调用哪个频道ares_process
?