📜  c++ start thread later - C++ (1)

📅  最后修改于: 2023-12-03 15:29:49.945000             🧑  作者: Mango

C++ 启动后启动线程

在 C++ 中,启动线程可以使用 std::thread 类,它提供了一种简单的方法来同时运行多个任务。

启动线程

要在 C++ 中启动线程,可以创建一个 std::thread 对象,可以将函数及其参数传递给该对象。以下是一个例子:

#include <iostream>
#include <thread>

void printMsg() {
    std::cout << "Hello from thread!" << std::endl;
}

int main() {
    std::thread t(printMsg);
    t.join(); // 等待线程完成
    return 0;
}

在此示例中,我们创建了一个名为 printMsg 的函数,并使用 std::thread 类创建了一个名为 t 的线程对象,并将 printMsg 函数传递给该对象。然后,我们调用 t.join() 等待线程完成。

启动线程之后

当我们启动线程并等待它完成时,这意味着我们需要等待当前线程(主线程)完成,然后才能继续执行程序的下一部分。有时我们可能想在启动线程后继续执行当前线程。

在这种情况下,我们可以使用 std::async 函数,该函数将函数及其参数作为参数,并返回一个 std::future 对象,该对象表示异步操作的结果。

以下是一个使用 std::async 函数的示例:

#include <iostream>
#include <future>

void printMsg() {
    std::cout << "Hello from thread!" << std::endl;
}

int main() {
    auto result = std::async(std::launch::async, printMsg);
    std::cout << "Hello from main!" << std::endl;

    result.wait(); // 等待异步操作完成
    return 0;
}

在此示例中,我们使用 std::async 函数启动了一个异步操作,并将 printMsg 函数传递给它。由于 std::async 函数可能会以异步方式执行该函数,因此我们需要等待它的结果。

结论

启动线程是 C++ 中异步执行任务的一种方式。我们可以使用 std::thread 类启动线程,并使用 std::async 函数在启动线程后执行其他任务。无论我们选择哪种方法,都需要进行适当的同步来确保线程安全。

以上是C++启动线程之后的介绍,希望对您有所帮助!