📅  最后修改于: 2023-12-03 15:29:49.945000             🧑  作者: Mango
在 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++启动线程之后的介绍,希望对您有所帮助!