인프런 커뮤니티 질문&답변

jc K님의 프로필 이미지
jc K

작성한 질문수

운영체제 공룡책 강의

15. 동시성 제어의 고전적 문제들: Chapter 7. Synchronization Examples (Part 1)

자바 Bounded-Buffer 코드 질문 있습니다.

작성

·

198

·

수정됨

0

안녕하세요. 좋은 강의 잘 듣고 있습니다.

 

다름이 아니라 해당 부분 자바 코드에서 의문점이 있어 질문 드려봅니다.

 

synchronized 식별자를 붙인 메서드가 여러 개 있을 때 모니터 락이 각 메서드별로 생기는지 혹은 전체를 관리하는 하나의 모니터 락만 생기는지가 전 강의에서 언급이 되었는지 모르겠지만, 잘 기억이 안나서,, 두 케이스 모두 질문이 드립니다.

 

  1. 모니터 락이 각 메서드별로 생기는 경우

take와 give는 count라는 공유 변수에 접근하고 있다고 생각됩니다. synchronized를 통해 각 메서드별로 mutual exclusive가 지켜지지만, take와 give 사이에서는 race condition 문제가 발생하지는 않나요 ?? 예를 들어 buffer size = 3, count = 1인 경우 give와 take가 동시에 실행될 수 있고, count++과 count--에서 race condition 문제가 발생할 수 있다고 생각했습니다. 직접 테스트 해 본 결과 해당 문제는 발생하지 않았는데, 왜 그런지가 궁금합니다.

 

  1. 모니터 락이 전체를 관리하는 하나만 생기는 경우

하나의 메서드에서 무한정 대기하는 경우가 생길 것 같습니다. 아마 첫 번째 케이스가 맞다고 생각하지만 혹시라도 두 번째 케이스라면, take에서 count=0일 때 while문 안에서 wait()을 하는데, give 메서드가 실행이 되지 않으니 무한정 대기할 것이라고 생각됩니다.

 

쓰다보니 굉장히 길어졌습니다 ㅜㅜ.. 읽어주셔서 감사합니다.

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
jc K님의 프로필 이미지
jc K

작성한 질문수

질문하기