в операционных системах обычно обрабатывается все по событию, остальное время процесс находится в ожидании, задержки смысла ставить нет, тк если они маленькие будут, то получится не лучше бесконечного цикла, который в пустую жрет процессор, если делать большие - то есть риск пропустить приходящие данные... а по событию - вешается на него функция обработчик, данные пришли, она вызывается, выполняет свою работу, и процесс дальше ждет наступления нового события... работает по аналогии с прерываниями, только основной код не в общем цикле хранится, а как бы в обработчике этого прерывания целиком