microseconds c++ multithreading c++11

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)