2012-11-18 44 views
1

可能重复:
Simple example of threading in C++如何创建C++中的多线程应用程序

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

+0

使用来自boost和C++ 11的'thread'类! – Naszta

+0

* Imp *:Boost是pthreads的封装。所以你可能想看看[pthreads](https://computing.llnl.gov/tutorials/pthreads/)。 – axiom

+0

我的问题对我来说应该是“-1”吗? –

回答

9

这里有一个简单的例子:

#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>获得,它们使您可以访问线程函数的返回值。

2

我打算让你做研究自己,但一个简单的方法来实现这一目标是有std::async

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

请注意,这是并发的,但不一定是同时进行。

我相信升压有这个太 - 它要么在Boost.Thread或Boost.Asio的

+2

'std :: async'并没有真正承诺任何特定的执行顺序。另外,它更适合于*异步生成一个值*而不是“同时运行一个函数”......也许我可以得到一个'std :: packaged_task',但为了说明的目的,一个扁平的'std :: thread似乎就够了。 –