2012-08-02 87 views
1

我有一对boost :: threads,它们都执行相同的功能。在线程之间创建“同步点”

void foo(){ 
    //Lock Mutex 
    //Do some stuffs, part 1 
    //Unlock Mutex 
    //Do some stuffs, part 2 
    //Lock Mutex 
    //Do some stuffs, part 3 
    //Unlock Mutex 
} 

为了让我的应用程序的工作,这是必要的,并行执行第2部分之前,所有的线程执行完毕部分1. 我没能找到,这将使我的任何机制那样做...我错过了什么吗?

谢谢。

+3

你在找什么叫做障碍。我认为有一个提升。 – 2012-08-02 01:41:18

+2

使用http://www.boost.org/doc/libs/1_50_0/doc/html/thread/synchronization.html#thread.synchronization.barriers – ForEveR 2012-08-02 01:44:07

回答

2

使用Boost障碍。来自官方文件的定义:

障碍是一个简单的概念。也称为集合点,它是多个线程之间的同步点。为特定数量的线程(n)配置的屏障是 ,并且随着线程 到达屏障,它们必须等待直到所有n个线程都到达。 一旦第n个线程到达屏障,所有等待线程 都可以继续,屏障重置。

here中提取。