LINUX.ORG.RU

Библиотека libevent для асинхронного неблокирующего ввода/вывода

 


0

1

В этом цикле статей рассматривается библиотека libevent, предназначенная для обработки оповещений о событиях и организации асинхронного ввода/вывода.
В первой статье описывается общая структура библиотеки.
Вторая статья посвящена основам использования libevent: наибольшее внимание уделено обработке событий.
В третьей статьеречь идёт о механизмах буферизации ввода/вывода. Тема четвёртой, заключительной статьи - применение libevent в сетевых приложениях.

>>> Подробности

★★★

Проверено: mono ()

Лучше бы про Pi-calculi и настоящее параллельное программирование писали, чем про этот убогий асинхрон.

anonymous
()
Ответ на: комментарий от anonymous

Ну, лично меня заинтересовало.

Вопрос вот в чём: вики говорит, что

ОС Linux, *BSD, Mac OS X, Solaris и Windows.

А как же поддержка всяких AIX, HP-UX, QNX и прочего?

DarkAmateur ★★★★
()
Ответ на: комментарий от anonymous

Это не параллельное программирование. Это кросс-платформенная обёртка всяких там poll.

sv75 ★★★★★
()
Ответ на: комментарий от anonymous

>Лучше бы про Pi-calculi и настоящее параллельное программирование писали, чем про этот убогий асинхрон.

Никто не мешает сочетать одно с другим. ;)

anonymous
()

Закопать немедленно

Однажды, год назад где-то, мы решили ее попробовать в реальном проекте. Нужен был сервер, работающий под РедХат. Довольно быстро посыпались проблемы. Мы писали одну заплатку за другой. Любимый перл в этом чуде был exit(1) при небольших и совсем не фатальных проблемах. Это мы тоже зашили, переписав error handler и загрузив его вместо их стандартного. Но нас добила поддержка Windows. Libevent в Windows использует.. select, и про 10K problem и в ус не дует. К этому моменту обьем кода нашей обертки уже начала быть сравнима с обьемом libevent. Короче, выбросили libebent и написали с нуля. Кода там немного, на порядок меньше чем в libebent, производительность не хуже, и работает одинаково быстро как под Linux, так и под Windows. Я не хочу обсуждать версию 1.4 против 2.0. Но те баги, что мы увидели в 1.4, которая была в каждом дистре - они неприемлимы даже в версии 0.1.

HappySquirrel
()
Ответ на: Закопать немедленно от HappySquirrel

Да, версия до 2.0 это жесть, но в 2.0 исправлены многие косяки, мы сейчас на реальном проекте её используем, а именно используем http-клиент и сервер оттуда. Работает все как часы, нагрузку держит.

Reset ★★★★★
()
Ответ на: комментарий от anonymous

Под Windows, сообщения Winsock направляются невидимому окну через WSAAsyncSelect. Сообщения окна слушаются в отдельной нити.

HappySquirrel
()

>статьеречь

пробел забыли.

tazhate ★★★★★
()
Ответ на: комментарий от anonymous

> Лучше бы про Pi-calculi и настоящее параллельное программирование писали, чем про этот убогий асинхрон.

+inf

tailgunner ★★★★★
()

Почитав комментарии, начинаешь понимать людей, которые серверные приложения пишут на Qt :) Хотя, конечно, избыточнооость...

hobbit ★★★★★
()
Ответ на: комментарий от anonymous

Ага. Если не считать жесточайших тормозов и утечек.

anonymous
()
Ответ на: Закопать немедленно от HappySquirrel

Мы успешно используем libevent в реальном проекте (версию 1.4). У libevent достаточно хорошо продуманная архитектура и простой код. У них также адекватные мэйнтейнеры, которые принимают патчи и активно общаются в рассылке. Если у вас возникли проблемы с libevent, и если вы даже написали патч, то почему бы не зарепортить баг?

...попробовать в реальном проекте. Нужен был сервер, работающий под РедХат. Довольно быстро посыпались проблемы.

Как показывает опыт, в подавляющем числе случаев ошибки, связанные с libevent, возникают из-за ошибок основной программы или из-за неправильного использования libevent.

Мы писали одну заплатку за другой.

Не верю. Мы при очень интенсивном использовании libevent нашли только пару багов (исправления уже давно в коде libevent).

Но нас добила поддержка Windows.

Это уже какой-то другой реальный проект? Ведь речь шла о РедХате.

Sorcerer ★★★★★
()
Ответ на: Закопать немедленно от HappySquirrel

> Libevent в Windows использует.. select, и про 10K problem и в ус не дует.

Не знаю, как в 1.4, но в 2.0 (цитирую документацию):

asynchronous-IO bufferevents

A bufferevent that uses the Windows IOCP interface to send and receive data to an underlying stream socket. (Windows only; experimental.)

awn
()

Чувствуется будет чумовая вещь.

vipdeco
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.