es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Ejecutar C++ en async o en tarea?

Soy un traductor de español que traduce documentos de informática. Traduzca lo siguiente al español. No traduzca el código y el resultado en markdown.

Soy algo nuevo en C++ y quiero ejecutar un vacío asincrónicamente o en una tarea.
En C# sería así:

var taskA = new Task(() => { Popupmessage(“Hola”); });
taskA.Start();

¿Cómo podría convertir eso a C++?

Encontré algo así e intenté:

std::async(std::launch::async, Popupmessage(“Hola”));

pero eso no funciona, creo que usé un código incorrecto aquí.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para ejecutar una función vacía de forma asíncrona en C++, se puede usar std::async como se ha mencionado. Sin embargo, es necesario pasarle un objeto llamable (como una función lambda o un puntero a función).

    Aquí hay un ejemplo de cómo usar std::async para ejecutar una función vacía de forma asíncrona:

    #include <iostream>
    #include <future>
    
    void Popupmessage(const std::string& message) {
        std::cout << "Mensaje: " << message << std::endl;
    }
    
    int main() {
        auto result = std::async(std::launch::async, []() { Popupmessage("Hola"); });
        // esperar a que la tarea asíncrona termine
        result.wait();
        return 0;
    }
    

    En este ejemplo, usamos una función lambda que llama a Popupmessage con el mensaje “Hola”. Pasamos esta función lambda a std::async junto con la política std::launch::async para ejecutar la tarea de forma asíncrona. Luego llamamos a result.wait() para esperar a que la tarea termine antes de salir del programa. La salida de este programa será “Mensaje: Hola”.

Comments are closed.