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 :: yield() vs std :: this_thread :: sleep_for()?
Respuesta
std::this_thread::yield
cuenta la aplicación para volver a programar la ejecución de las discusiones, que se debe utilizar en un caso en el que se encuentra en un estado de espera ocupado, como en un grupo 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 utilizar si Realmente quiero esperar por una cantidad específica de tiempo. Esto se puede usar para tareas, donde el tiempo realmente importa, por ejemplo, si realmente solo quieres esperar 2 segundos. (Tenga en cuenta que la aplicación podría esperar más tiempo que la duración de tiempo determinado)
Entonces, ¿significa que std :: this_thread :: yield abandonará la ejecución durante "algún tiempo" y lo intentará de nuevo? ¿Cómo funciona el hilo cuando intenta la próxima vez? – polapts
@polapts Sí, 'std :: this_thread :: yield' solo permite al planificador ejecutar otro hilo. Cuando el programador vuelve a este hilo, solo funcionará después de la llamada a 'std :: this_thread :: yield' – inf
std :: :: this_thread sleep_for()
hará que su sueño hilo durante un tiempo determinado (el hilo se detiene para un tiempo dado). (http://en.cppreference.com/w/cpp/thread/sleep_for)
std :: this_thread :: rendimiento()
detendrá la ejecución del subproceso actual y dar prioridad a otros procesos/hilos (si hay otros procesos/subprocesos en espera en la cola). La ejecución del hilo no se detiene. (simplemente libera la CPU). (http://en.cppreference.com/w/cpp/thread/yield)
- 1. std :: this_thread :: yield() usage?
- 2. std :: :: this_thread sleep_for() y GCC
- 3. Cómo std :: thread sleep
- 4. el comportamiento de std :: asíncrono con la política std :: :: lanzamiento asíncrono
- 5. std :: cin.getline() vs. std :: cin
- 6. std :: mem_fun vs std :: mem_fn
- 7. std :: thread detect principal thread
- 8. std :: list vs std :: vector iteration
- 9. Diferencia: std :: runtime_error vs std :: exception()
- 10. Rendimiento std :: strstr vs std :: string :: encontrar
- 11. std :: string :: longitud() vs. std :: string :: size()
- 12. std :: size_t vs size_t vs std :: string :: size_type
- 13. Rendimiento relativo de std :: vector vs. std :: list vs. std :: slist?
- 14. std :: string vs. char *
- 15. printf vs std :: cout
- 16. std :: async usa el mismo subproceso y mi código no logra el paralelismo.
- 17. std :: hash_set vs std :: unordered_set, ¿son lo mismo?
- 18. arrojar nueva std :: excepción vs std :: excepción tiro
- 19. iterador avanzado para el std :: vector std :: advance VS operator +?
- 20. std :: atomic | compare_exchange_weak vs. compare_exchange_strong
- 21. std :: vector vs normal array
- 22. std :: mapa y std :: unordered_map
- 23. std :: async - std :: launch :: async | std :: launch :: deferred
- 24. std :: enable_if: parámetro vs template parámetro
- 25. google :: dense_hash_map vs std :: tr1 :: unordered_map?
- 26. struct con 2 celdas vs std :: pair?
- 27. C++: "std :: endl" vs libros "\ n"
- 28. Inicialización directa vs uniforme en std :: asignador
- 29. Rendimiento de qsort vs std :: sort?
- 30. Cómo manejar la evolución de C++ std :: namespace? por ejemplo: std :: tr1 :: shared_ptr vs. std :: shared_ptr vs. boost :: shared_ptr vs. boost :: tr1 :: shared_ptr
posible duplicado de [Rendir el intervalo de tiempo para el hilo actual en C++] (http://stackoverflow.com/questions/11048657/giving-up-the-time-slice-for-current-thread -in-c) – ypnos
Parece que no se responde allí. – polapts
'yield' no arroja. 'sleep_for' puede lanzar. – dirkgently