有人可以发布一个在 C++ 中启动两个(面向对象)线程的简单示例。
我正在寻找实际的 C++ 线程对象,我可以在其上扩展运行方法(或类似的东西),而不是调用 C 风格的线程库。
我省略了任何特定于操作系统的请求,希望回复的人会回复跨平台库以供使用。我现在只是明确表示。
创建一个您希望线程执行的函数,例如:
void task1(std::string msg) { std::cout << "task1 says: " << msg; }
现在创建thread最终将调用上述函数的对象,如下所示:
thread
std::thread t1(task1, "Hello");
(您需要#include <thread>访问该std::thread课程)
#include <thread>
std::thread
构造函数的参数是线程将执行的函数,然后是函数的参数。线程在构造时自动启动。
如果稍后您想等待线程完成执行该函数,请调用:
t1.join();
(加入意味着调用新线程的线程将等待新线程完成执行,然后再继续自己的执行)。
#include <string> #include <iostream> #include <thread> using namespace std; // The function we want to execute on the new thread. void task1(string msg) { cout << "task1 says: " << msg; } int main() { // Constructs the new thread and runs it. Does not block execution. thread t1(task1, "Hello"); // Do other things... // Makes the main thread wait for the new thread to finish execution, therefore blocks its own execution. t1.join(); }
有关 std::thread 的更多信息在这里
-std=c++0x -pthread