Это вопрос интервью: Реализация барьера между 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;
};
Является ли это решение Ok? Может ли барьер быть реализован с использованием только мьютексов?
[Маленькая книга семафоров] (http://www.cs.ucr.edu/~kishore/papers/semaphores.pdf) имеет достойное отношение к барьерам, если вы хотите преследовать его. – Duck
@ Duck это дает многоразовое решение барьера. Я ищу регулярное решение барьера. – Yakov