Проблема с парными bufferevents с libevent2
У меня есть это многопоточное приложение с циклом для каждого потока и двумя парными буферными событиями на поток для отправки / получения данных между ними и основным потоком.
Это в теории. На практике bufferevent_pair_new() возвращает нормально, но создаются две структуры bufferevent без используемых дескрипторов, поэтому, когда я вызываю с ними bufferevent_getfd(), я получаю -1 для обоих.
Конечно, когда я пытаюсь прикрепить их к циклу событий без добавления какого-либо другого события, поток возвращается и возникает ошибка "цикл без событий".
Я видел нечто подобное в Tor (парные bufferevents для связи между потоками). Я делаю это правильно? Нужно ли что-то еще?
1 ответ
Я знаю, что это более старый вопрос, но я случайно нашел ответ в поиске другой информации, поэтому я решил опубликовать ее здесь на тот случай, если кому-то все-таки она понадобится. Оригинальный ответ был здесь http://archives.seul.org/libevent/users/Jul-2011/msg00009.html
В случае, если это будет снято, я также подведу итоги.
События парного буфера не имеют внутренних событий, поэтому они не мешают циклу событий не достигать состояния ожидания событий, и цикл завершается. В качестве обходного пути было добавлено событие таймера, которое ничего не делало. Это, однако, будет препятствовать завершению цикла. Была возможность исправить это так, чтобы парные события буфера препятствовали выходу из цикла, но я не знаю, было ли это когда-либо сделано. Связанное выше сообщение имеет ту же дату, что и оригинальное сообщение, возможно, это был даже ответ на ФП через другой ресурс.