3

可能重复:
C++ 中线程的简单示例

谁能给我一个例子,如何在 C++ 中创建一个同时运行两个函数的简单应用程序?我知道这个问题与线程管理和多线程有关,但我基本上是一个 php 程序员,我对高级 C++ 编程并不熟悉。

4

2 回答 2

11

这是一个简单的例子:

#include <iostream>
#include <thread>

void f1() { std::cout << "This is function 1.\n"; }
void f2() { std::cout << "This is a different function, let's say 2.\n"; }

int main()
{
    std::thread t1(f1), t2(f2);   // run both functions at once

    // Final synchronisation:
    // All running threads must be either joined or detached
    t1.join();
    t2.join();
}

如果您的函数需要产生返回值,您应该将上述线程对象与std::packaged_task可运行的对象结合起来,这些对象可以从中获得<future>,这样您就可以访问线程函数的返回值。

于 2012-11-18T18:23:51.173 回答
2

我将让您自己进行研究,但实现这一目标的简单方法是std::async

http://en.cppreference.com/w/cpp/thread/async

请注意,它是同时发生的,但不一定是同时发生的。

我相信 Boost 也有这个 - 它在 Boost.Thread 或 Boost.ASIO 中

于 2012-11-18T18:23:22.870 回答