Espacios de nombres
Variantes
Acciones

std::this_thread::yield

De cppreference.com
< cpp‎ | thread
 
 
Biblioteca de apoyo de concurrencia
Hilos
(C++11)
(C++20)
Espacio de nombres this_thread
(C++11)
yield
(C++11)
(C++11)
Cancelación cooperativa
Exclusión mutua
(C++11)
Gestión genérica de bloqueo
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Variables de condición
(C++11)
Semáforos
Pestillos y barreras
(C++20)
(C++20)
Futuros
(C++11)
(C++11)
(C++11)
(C++11)
Recuperación segura
(C++26)
Punteros de riesgo
Tipos atómicos
(C++11)
(C++20)
Inicialización de tipos atómicos
(C++11)(en desuso en C++20)
(C++11)(en desuso en C++20)
Orden de memoria
Funciones independientes para operaciones atómicas
Funciones independientes para indicadores atómicos
 
Definido en el archivo de encabezado <thread>
void yield();
(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.

Contenido

[editar] 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.

[editar] 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.

[editar] 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).

[editar] 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

[editar] Véase también

Documentación de C para thrd_yield