Espacios de nombres
Variantes
Acciones

std::promise::set_value_at_thread_exit

De cppreference.com
< cpp‎ | thread‎ | promise
 
 
Biblioteca de apoyo de concurrencia
Hilos
(C++11)
(C++20)
Espacio de nombres this_thread
(C++11)
(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
 
 
void set_value_at_thread_exit( const R& value );
(1) (solo miembro de la plantilla genérica promise)
(desde C++11)
void set_value_at_thread_exit( R&& value );
(2) (solo miembro de la plantilla genérica promise)
(desde C++11)
void set_value_at_thread_exit( R& value );
(3) (solo miembro de la especialización de plantilla promise<R&>)
(desde C++11)
void set_value_at_thread_exit()
(4) (solo miembro de la especialización de plantilla promise<void>)
(desde C++11)

Almacena el valor value en el estado compartido sin dejarlo listo de inmediato. El estado se deja listo cuando el hilo actual termina, después de que todas las variables con duración de almacenamiento local al hilo se han destruido.

Esta operación se comporta como si set_value, set_exception, set_value_at_thread_exit, y set_exception_at_thread_exit tomaran posesión de un solo mutex asociado con el objeto promesa mientras se actualiza el objeto promesa.

Se lanza una excepción si no hay un estado compartido o si el estado compartido ya almacena un valor o excepción.

Las llamadas a esta función no introducen carreras de datos con llamadas a get_future (por lo tanto no necesitan sincronizarse entre sí).

Contenido

[editar] Parámetros

value - El valor a almacenar en el estado compartido.

[editar] Valor de retorno

(Ninguno)

[editar] Excepciones

std::future_error en las siguientes condiciones:

  • *this no tiene un estado compartido. El código de error se establece a no_state.

Adicionalmente:

1, 3) Cualquier excepción lanzada por el constructor de copia de value.
2) Cualquier excepción lanzada por el constructor de movimiento de value.

[editar] Ejemplo

#include <iostream>
#include <future>
#include <thread>
 
int main()
{
    using namespace std::chrono_literals;
    std::promise<int> p;
    std::future<int> f = p.get_future();
    std::thread([&p] {
          std::this_thread::sleep_for(1s);
          p.set_value_at_thread_exit(9);
    }).detach();
 
    std::cout << "Esperando..." << std::flush;
    f.wait();
    std::cout << "¡Listo!\nEl resultado es: " << f.get() << '\n';
}

Salida:

Esperando...¡Listo!
El resultado es: 9

[editar] Véase también

Establece el resultado a un valor específico.
(función miembro pública) [editar]