Вы можете иметь:
while(1) {
sleep(100); // 100 ms
// check if there is a message
// process message
//...
}
Это нормально, но на серверах, работающих с потоками 10000, есть издержки, так как потоки выходят из спящего режима и проверяют сообщение, вызывая переключение контекста. Вместо этого операционные системы предоставляют такие функции, как select
и epoll
в Linux, которые позволяют потоку ожидать события.
while(1) {
// wait for message
// process message
//...
}
При использовании ожидания поток не "просыпается", пока не получено сообщение.