gpt4 book ai didi

c++ - C++中线程的简单示例

转载 作者:bug小助手 更新时间:2023-10-28 01:31:08 25 4
gpt4 key购买 nike

有人可以发布一个在 C++ 中启动两个(面向对象)线程的简单示例。

我正在寻找实际的 C++ 线程对象,我可以在其上扩展运行方法(或类似的东西),而不是调用 C 风格的线程库。

我省略了任何特定于操作系统的请求,希望回复的人会回复跨平台库以供使用。我现在只是明确表示。

最佳答案

创建一个你希望线程执行的函数,例如:

void task1(std::string msg)
{
std::cout << "task1 says: " << msg;
}

现在创建 thread最终将像这样调用上述函数的对象:

std::thread t1(task1, "Hello");

(您需要 #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();
}

More information about std::thread here

  • 在 GCC 上,使用 -std=c++0x -pthread 编译.
  • 这应该适用于任何操作系统,前提是您的编译器支持此 (C++11) 功能。

关于c++ - C++中线程的简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/266168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com