Подійно-орієнтоване програмування застосовується в серверних програмах для вирішення проблеми масштабування на велику кількість одночасних з'єднань.
У серверах, побудованих за моделлю «один потік на з'єднання», проблеми з масштабованістю виникають з наступних причин:
- занадто великі накладні витрати на структури даних операційної системи, необхідні для опису однієї задачі;
- занадто великі накладні витрати на перемикання контекстів.
Серверний застосунок при подійно-орієнтованому програмуванні реалізується на системному виклику, який отримує повідомлення події одночасно від багатьох дескрипторів (мультиплексування). При обробці подій використовуються виключно неблокуючі операції введення/виведення, щоб жоден з дескрипторів не перешкоджав обробці подій від інших дескрипторів.
3 Мультиплексування
Для мультиплексування сполук можуть бути використані наступні засоби операційної системи:
- Select (більшість UNIX систем);
- Poll і epoll (Linux);
- Kqueue (FreeBSD);
- /Dev/poll ( Solaris);
- IO completion port (Windows);
Приклади реалізацій
- Веб-сервериNgix та Lighthttpd;
- Проксі-сервер Squid.