std::this_thread::yield - cppreference.com
De cppreference.com
| Definido en el archivo de encabezado |
||
|
|
(desde C++11) | |
Proporciona una sugerencia a la implementación de reprogramar la ejecución del hilo, lo que permite que se ejecuten otros hilos.
Parámetros
(Ninguno)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Valor de retorno
(Ninguno)
Original:
(none)
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
Notas
El comportamiento exacto de esta función depende de la implementación, en particular de la mecánica
del planificador del sistema operativo en curso y el estado del sistema. Por ejemplo, un planificador de tiempo real de primeras entradas, primeras salidas (SCHED_FIFO en Linux) suspendería el hilo actual y lo pondría al final de la cola de hilos con la misma prioridad que no están listos para ser ejecutados (y si no hay otros hilos con la misma prioridad, yield no tiene efecto).
Ejemplo
#include <iostream> #include <chrono> #include <thread> // "sueño ocupado" mientras se sugiere que se ejecuten otros hilos // por una pequeña cantidad de tiempo void dormir_poco(std::chrono::microseconds us) { auto inicio = std::chrono::high_resolution_clock::now(); auto fin = inicio + us; do { std::this_thread::yield(); } while (std::chrono::high_resolution_clock::now() < fin); } int main() { auto inicio = std::chrono::high_resolution_clock::now(); dormir_poco(std::chrono::microseconds(100)); auto elapsed = std::chrono::high_resolution_clock::now() - inicio; std::cout << "se ha esperado " << std::chrono::duration_cast<std::chrono::microseconds>(elapsed).count() << " microsegundos\n"; }
Posible salida:
se ha esperado 128 microsegundos