использование нескольких каналов c-ares в цикле select ()

Я новичок в библиотеке 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() получает FDs для канала
  • updateTimeout() снижает время ожидания до того, что требуется каналу
  • process() является ares_process()

Я могу легко настроить select() ждать нескольких каналов, но когда select() возвращает, как я могу сказать, какой канал позвонить ares_process на?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …