Como posso dormir menos de 0,001s / 1ms?
Se eu usar isso, ele me mostra que está dormindo apenas por 1 ms. É possível dormir menos?
$ time sleep 0.0000000001
sleep 0.0000000001 0,00s user 0,00s system 77% cpu 0,001 total
Como posso dormir menos de 0,001s / 1ms?
Se eu usar isso, ele me mostra que está dormindo apenas por 1 ms. É possível dormir menos?
$ time sleep 0.0000000001
sleep 0.0000000001 0,00s user 0,00s system 77% cpu 0,001 total
sleep
normalmente usam onanosleep(2)
syscall. Mas apesar desta syscall ter um parâmetro de alta precisão, a precisão real dependerá dos temporizadores usados pelo Linux.Normalmente, um kernel do Linux é compilado com a
CONFIG_HZ=250
opção. (Veja/boot/config-...
).Uma extensão
CONFIG_HIGH_RES_TIMERS
pode melhorar a precisão. Consulte https://elinux.org/High_Resolution_TimersLá onde um comportamento antigo com uma espera ocupada, mas não no kernel atual:
Observe também que bifurcar um processo e carregar um
sleep
programa leva algum tempo. No meu sistema, eu tenho: