Когда у вас есть плотный цикл опроса состояния чего-либо, я не совсем уверен, как сделать опрос, не мешая другим процессам, желающим использовать процессор. Например, делая это:
while (state == BUSY) state = check_state();
кажется пустой тратой ресурсов. Я думаю, что лучший способ сделать это будет:
while (state == BUSY) {
sched_yield();
state = check_state();
}
Я бы ожидал, что top отобразит процесс как спящий, даже если он будет использовать 100% процессорного времени, пока он это делает. Таким образом, процесс будет (я надеюсь) опросить «красиво». Но это не то, что происходит. На данный момент у меня есть
while (state == BUSY) {
sleep(1);
state = check_state();
}
, что вполне приемлемо, но я чувствую, что это можно сделать лучше, чем это. Есть ли стандартная практика для этого?