Код while(condition);
является совершенно корректным кодом, хотя его использование ограничено. Я предполагаю, что condition
- это переменная, а не функция & mdash; другие здесь обсуждают функционал condition
.
Одно из применений while(condition);
может заключаться в блокировке во время ожидания сигнала , например. SIGHUP
, где обработчик сигнала изменяет переменную condition
. Однако обычно это не лучший способ дождаться сигнала. Обычно в цикле используется sleep
, т.е. while(condition) { sleep(1); }
.
Отсутствие какого-либо sleep
означает, что цикл будет непрерывно обрабатываться в промежуточный период и, вероятно, тратить циклы обработки впустую. Если процесс не управляет своими ресурсами (и даже там ...), я думаю, что это подходит только в том случае, если цикл необходимо разорвать с интервалом, меньшим, чем гранулярность доступной команды sleep
(т. Е. Сон гранулируется с помощью второй, но вам нужен код после того, как просмотр выполнен с временем отклика менее секунды). При этом блокирующая труба или розетка могут быть предпочтительнее сигналов, с точки зрения производительности - хотя у меня нет никаких эмпирических данных для их резервного копирования, и я подозреваю, что производительность может значительно отличаться в зависимости от платформы.
Один может иметь condition
, модифицированный параллельным потоком того же процесса, но я думаю, что следует предпочесть сделать это с помощью мьютекса или семафора (т. Е. condition
может потребоваться быть больше, чем простая переменная).
Надеюсь, это полезно, или, по крайней мере, пища для размышлений!