Как заменить select () на kevent () для повышения производительности?

Со страницы Kqueue в Википедии :

Kqueue обеспечивает эффективные конвейеры событий ввода и вывода между ядром и пользовательской средой. Таким образом, можно изменять фильтры событий, а также получать ожидающие события, используя только один системный вызов kevent (2) на каждую итерацию основного цикла событий. Это контрастирует с более старыми традиционными системными вызовами опроса, такими как poll (2) и select (2), которые менее эффективны, особенно при опросе событий на большом количестве файловых дескрипторов

Звучит здорово. Я нацелен на FreeBSD для своего сервера, и я обрабатываю значительное количество fd сетевых сокетов - использую select () для всех и выясняю, с кого читать данные. Я бы предпочел использовать вызовы kevent () для повышения производительности, так как это '

Я прочитал страницу руководства по kevent на FreeBSD здесь , но для меня это непонятно, и я не нахожу хороших ресурсов, которые бы это объясняли. Пример использования kevent для замены select решит мою проблему, а также поможет мне лучше понять, как используется kevent ().

6
задан arrowd 1 December 2016 в 18:39
поделиться