libevent — это программная библиотека , которая обеспечивает асинхронное уведомление о событиях. API libevent предоставляет механизм для выполнения функции обратного вызова , когда определенное событие происходит в файловом дескрипторе или после достижения тайм-аута . libevent также поддерживает обратные вызовы, запускаемые сигналами и обычными тайм-аутами.
libevent предназначен для замены цикла событий , который находится в сетевых серверах, управляемых событиями . Приложение может просто вызывать event_dispatch()
и затем динамически добавлять или удалять события без необходимости изменять цикл событий.
В настоящее время libevent поддерживает /dev/poll
, kqueue(2)
, POSIX select(2)
, Windows IOCP , и порты событий Solaris . Он также имеет экспериментальную поддержку сигналов реального времени. Представленный API событий является единым для всех поддерживаемых платформ. В результате libevent позволяет разрабатывать переносимыеpoll(2)
приложения и предоставляет «наиболее масштабируемый механизм уведомления о событиях, доступный в операционной системе». [1]epoll(7)
Используя обратные вызовы для сигналов, libevent позволяет писать «безопасные» обработчики сигналов, поскольку ни один из предоставленных пользователем кодов обработки сигналов не выполняется в контексте сигнала .
libevent был создан Нильсом Провосом и поддерживается в основном Азатом Хужиным. Он выпущен под лицензией BSD . [3]
Вот некоторые из примечательных приложений, использующих преимущества libevent: