강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kimjc54674457
kimjc54674457

câu hỏi đã được viết

Bài giảng sách khủng long hệ điều hành

15. Các vấn đề cổ điển của điều khiển đồng thời: Chapter 7. Synchronization Examples (Part 1)

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

Viết

·

296

·

Đã chỉnh sửa

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

 

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

운영체제동시성

Câu trả lời

Câu hỏi này đang chờ câu trả lời
Hãy là người đầu tiên trả lời!
Hình ảnh hồ sơ của kimjc54674457
kimjc54674457

câu hỏi đã được viết

Đặt câu hỏi