Кроссплатформенный способ - использовать select
или poll
, которые указаны в POSIX.
В качестве альтернативы и более эффективно, вы можете использовать библиотеку. Основным преимуществом библиотеки является то, что она может делать вещи более эффективно, чем select
, используя системные механизмы.
Например, хорошая сетевая библиотека, вероятно, будет использовать:
epoll
в Linux
kqueue
на FreeBSD
/dev/poll
на солярисе
pollset
в AIX
iocp
на Win32
- и т.д.
Я думаю, вы можете использовать asio
для C ++ или libevent
для C.