Здравствуйте, Optimus1, Вы писали:
O>Я не могу понять, я правильно понимаю, что EVLOOP_ONCE — говорит event_base_loop — ждать пока не появится хотя бы одно событие, и если появилось или было в момент запуска(одно или более) то обработать их, если события в очереди закончились, то завершить свою работу ??
Да, это типовая логика.
O> event_base_loop(Event_base, EVLOOP_ONCE ); //запускаем цикл, который теоретически, если я правильно понял — должен дождаться хотя бы одного события
А вы хоть что-то ему дали? Насколько я вижу — ни сокета, ни таймера.
В этом случае он вполне может считать, что раз пустой набор ожидания — лучше сразу выйти — это тоже типовой вариант в подобных библиотеках.
Сделайте, например, UDP сокет и подкиньте ему ожидание на чтение.
O>И позвольте пожалуйста еще один вопрос: а, чем собственно EVLOOP_NONBLOCK отличается от EVLOOP_ONCE ? Тем, что, если во время запуска, если событий в очереди нет — то цикл ждать их ен будет и сразу завершит работу ?
Да.
Но вообще libevent — это наиболее неудачный, как по мне, пример такой библиотеки — самый корявый и негодный API среди всех.
За красивой и удобной реализацией идите или к libuv хотя бы, libev, или к ISC eventlib...
Для C++ можно сразу смотреть на boost.asio (если проактивность не мешает).