0
이것은 인터뷰 질문입니다. 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;
};
해당 솔루션 괜찮습니까? 배리어는 뮤텍스만을 사용하여 구현 될 수 있습니까?
[세마포어의 작은 책은] (http://www.cs.ucr.edu/~kishore/papers/semaphores.pdf) 장벽의 괜찮은 치료가 있습니다. 그것은 @Duck – Duck
재사용 장벽 해결책이다 정규 차단 솔루션을 찾고 있습니다. – Yakov