3) 모니터(Monitor)
* 추상화된 고급 동기화 도구(High-level synchronizaion contruct)
: Java, C++, C#, Pascal
: 프로그래머가 명시적으로 동기화를 위한 코딩을 작성할 필요는 없음.
class MyCode {
private int value, ... ;
synchronized void f() {
...
}
synchronized void g() {
...
}
void h() {
....
}
}
* 모니터 내에서 상호 배제(mutual exclusion)를 보장
: 모니터 외부에서는 접근불가
: 항상 하나의 프로세스만 활성화됨을 보장
* 상호배제 + 조건 변수
< 모니터1 >
: P가 나가면서 조건 C1에 신호(signal)를 보내면, 첫번째 Y가 모니터로 진입
: P가 나가면서 조건 C3에 신호(signal)를 보내면, 첫번째 Z가 모니터로 진입
: P가 나가면서 조건 C2에 신호(signal)를 보내면, 혹은 아무런 신호를 보내지 않으면
첫번째 X가 모니터로 진입
< 모니터 2: 확장 >
* P가 현재 모니터 내부에서 활성화되어 있다.
: P가 나가면서 조건 C1에 신호(signal)를 보내면, 첫번째 Y가 모니터로 진입
: P가 나가면서 조건 C3에 신호(signal)를 보내면, 첫번째 Z가 모니터로 진입
: P가 나가면서 조건 C2에 신호(signal)를 보내면, 혹은 아무런 신호를 보내지 않으면
첫번째 A가 모니터로 진입
댓글 없음:
댓글 쓰기