libev
Лично мне известна одна серьезная принципиальная проблемаЯ встречал их больше. Например, dns там — кривой, в ipv6-only средах его разрывает к хуям. Под нагрузкой иногда ему становится хреново и он начинает при добавлении ивента выдавать странные ошибки типа ENOENT.
в либевенте нельзя передавать открытое соединение в другой тред, т.е. ответчать должен тот же поток, который начал читать. Это неприятно, особенно если нужно поддерживать кипалайв, но я к этому привык.ввод-вывод надо делать ТОЛЬКО из основного потока.
остальное — ересь, которая привести может только к фатальному исходу.
Почему? У меня вообще никакого "основного потока" не было, все равноправные.
Под нагрузкой иногда ему становится хреново и он начинает при добавлении ивента выдавать странные ошибки типа ENOENT.Вот это кстати в какой версии либевента наблюдалось? Это какая-то известная бага?
ввод-вывод надо делать ТОЛЬКО из основного потока.обоснуй что ли
Вот это кстати в какой версии либевента наблюдалось? Это какая-то известная бага?Я не ходил в багтрекер. У меня libevent использовался в питоновском gevent, я отследил проблему только до момента, где идёт добавление эвента, проверил, что он там валидный и забил — в gevent 1.0 один фиг тоже перешли на libev, а возиться мне не хотелось.
Версия была 1.4.14b-stable, последняя на тот момент в 1.4-ветке.
Сейчас актуален 2.0 стабильный. И он в убунте даже ставится из репозитория.
Напоролся на свежачок. Либевент, пишу в буффер вывода на стороне клиента, если сервер только что срубили через ctrl+c получаю сегфолт. Похоже это связано с тем, что недавно в убунте пакет либевента проапдейтился. Три дня назад такой проблемы не было.
сервер только что срубили через ctrl+cэто как такое возможно?
сервер отпускает управляющую консоль, срубить можно только сигналом.
если обработчики сигналов написаны все правильно, то сегфолтов быть не должно никаких.
Оставить комментарий
sollariss
Я сейчас изучаю libev, раньше использовал libevent. Хочу спросить людей, хорошо знающих эту библиотеку:1) Хорошая книжка по либеву есть? Вот у либевента есть http://www.wangafu.net/~nickm/libevent-book/ там 90% реально нужного функционала описано. По либев я пока не нашел ничего сравнимого по полноте раскрытия темы.
2) Почему либев, а не либевент? Я много слышал заявлений в духе "все переходят на либев".
А почему? В качестве одной из мотиваций - баги либевента. Лично мне известна одна серьезная принципиальная проблема: ограниченная многопоточность, в либевенте нельзя передавать открытое соединение в другой тред, т.е. ответчать должен тот же поток, который начал читать. Это неприятно, особенно если нужно поддерживать кипалайв, но я к этому привык.
3) В либевенте есть много полезных штуковин. Кроме http сервера в коробке, без которого обойтись можно, есть очень удобные буферы (bufferevent). В примерах по либев, которые я видел, ничего подобного нет - буферы приходится писать самостоятельно. Велосипед изобретать не хочется, наверняка кто-то уже написал удобные средства для буферизации над сокетами.