microseconds - usleep c++ linux
std:: this_thread:: yield() vs std:: this_thread:: sleep_for()? (2)
Quería saber cuál es la diferencia entre C ++ 11 std::this_thread::yield()
y std::this_thread::sleep_for()
? ¿Y cómo decidir qué usar? Gracias.
std :: this_thread :: sleep_for ()
hará que el hilo se duerma durante un tiempo determinado (el hilo se detiene durante un tiempo determinado). ( http://en.cppreference.com/w/cpp/thread/sleep_for )
std :: this_thread :: yield ()
detendrá la ejecución del subproceso actual y dará prioridad a otros procesos / subprocesos (si hay otros procesos / subprocesos esperando en la cola). La ejecución del hilo no se detiene. (Solo libera la CPU). ( http://en.cppreference.com/w/cpp/thread/yield )
std::this_thread::yield
le dice a la implementación que reprograme la ejecución de subprocesos, que deben usarse en un caso en el que se encuentre en un estado de espera ocupado, como en un conjunto de subprocesos:
...
while(true) {
if(pool.try_get_work()) {
// do work
}
else {
std::this_thread::yield(); // other threads can push work to the queue now
}
}
std::this_thread::sleep_for
se puede usar si realmente quiere esperar un tiempo específico. Esto se puede usar para tareas, donde el tiempo realmente importa, por ejemplo: si realmente solo quiere esperar 2 segundos. (Tenga en cuenta que la implementación puede esperar más tiempo que la duración del tiempo dada)