2017-04-13 4 views
0

나는 주제에서 언급 한 책을 통해 갈 것이고, 한 가지는 버그이다.세마포어의 작은 책 - 장벽

1 rendezvous 
2 
3 mutex.wait() 
4  count = count + 1 
5 mutex.signal() 
6 
7 if count == n: barrier.signal() 
8 
9 barrier.wait() 
10 barrier.signal() 
11 
12 critical point 

, 그러나 카운터의 판독은 뮤텍스로 보호해서는 안된다, 그래서 읽는 동안 불일치가 없습니다 : 배리어를 들어,이 솔루션은 다음과 같은 (의사) 코드는? 내 말은 :

아니면 카운터에 대해 지나치게 신중합니까?

답변 해 주셔서 감사합니다.

답변

1

네, 보호해야하며 수정 프로그램이 올바르게 보입니다.

그것은 저자가 자신의 의사를 과도하게 단순화 가능하고, 실제로 의미 :

3 mutex.wait() 
4  count = count + 1 
5  c = count 
6 mutex.signal() 
7 
8 if c == n: barrier.signal() 

... 올바른있을 것이다.