2012-08-02 97 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中提取。