강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

kimjc54674457 のプロフィール画像
kimjc54674457

投稿した質問数

オペレーティングシステム恐竜本講義

15. 並行制御の古典的問題: Chapter 7. Synchronization Examples (Part 1)

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

作成

·

297

·

編集済み

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

 

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

운영체제동시성

回答

回答を待っている質問です
最初の回答を残してください!
kimjc54674457 のプロフィール画像
kimjc54674457

投稿した質問数

質問する