강의

멘토링

커뮤니티

Inflearn Community Q&A

kimjc54674457's profile image
kimjc54674457

asked

Operating System Dinosaur Book Lecture

15. Classical problems of concurrency control: Chapter 7. Synchronization Examples (Part 1)

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

Written on

·

297

·

Edited

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 메서드가 실행이 되지 않으니 무한정 대기할 것이라고 생각됩니다.

 

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

운영체제동시성

Answer

This question is waiting for answers
Be the first to answer!
kimjc54674457's profile image
kimjc54674457

asked

Ask a question