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 部分的执行。我找不到任何能够让我这样做的机制……我错过了吗某物?

谢谢你。

4

1 回答 1

2

使用增强屏障。来自官方文档的定义:

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

这里提取。

于 2012-08-02T07:53:03.273 回答