【发布时间】:2013-12-07 16:09:40
【问题描述】:
这是一道面试题:
使用互斥锁和信号量实现n 线程之间的屏障。
我提出的解决方案:
class Barrier {
public:
Barrier(unsigned int n) : _n(n),_count(0),_s(0) {}
~Barrier() {}
void Wait() {
_m.lock();
_count++;
if (_count == _n) { _s.signal(); }
_m.unlock();
_s.wait();
_s.signal();
}
private:
unigned int _n;
unigned int _count;
Mutex _m;
Semaphore _s;
};
这个解决方案好吗? Barrier 是否只能使用互斥锁来实现?
【问题讨论】:
-
The Little Book of Semaphores 如果你想追求它,它可以很好地处理障碍。
-
@Duck 它提供了可重复使用的屏障解决方案。我正在寻找常规的屏障解决方案。
标签: c++ c mutex semaphore barrier