Я бы использовал libevent.
Он использует лучший доступный механизм на целевой платформе, каким бы он ни был; Таким образом, без изменений ваша программа будет использовать kqueue
на BSD, epoll(4)
на Linux и все, что лучше для всего, что может существовать, при этом все еще возвращаясь к select(2)
на старых платформах, и каким-то образом она также работает Окна.
Волшебное программное обеспечение. :)