std::this_thread:: yield
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<thread>
|
||
|
void
yield
(
)
noexcept
;
|
(desde C++11) | |
Proporciona una sugerencia a la implementación para reprogramar la ejecución de hilos, permitiendo que otros hilos se ejecuten.
Contenidos |
Parámetros
(ninguno)
Valor de retorno
(ninguno)
Notas
El comportamiento exacto de esta función depende de la implementación, en particular de la mecánica del planificador del SO en uso y del estado del sistema. Por ejemplo, un planificador de tiempo real primero en entrar, primero en salir (
SCHED_FIFO
en Linux) suspendería el hilo actual y lo colocaría al final de la cola de hilos de la misma prioridad que están listos para ejecutarse, y si no hay otros hilos en la misma prioridad,
yield
no tiene efecto.
Ejemplo
#include <chrono> #include <iostream> #include <thread> // "busy sleep" while suggesting that other threads run // for a small amount of time void little_sleep(std::chrono::microseconds us) { auto start = std::chrono::high_resolution_clock::now(); auto end = start + us; do { std::this_thread::yield(); } while (std::chrono::high_resolution_clock::now() < end); } int main() { auto start = std::chrono::high_resolution_clock::now(); little_sleep(std::chrono::microseconds(100)); auto elapsed = std::chrono::high_resolution_clock::now() - start; std::cout << "waited for " << std::chrono::duration_cast<std::chrono::microseconds>(elapsed).count() << " microseconds\n"; }
Salida posible:
waited for 128 microseconds
Véase también
|
Documentación de C
para
thrd_yield
|