아래와 같은 코드가있을 때 signal.WaitOne을 호출하는 스레드가 다른 스레드가 잠금을 획득하기 위해 획득 한 잠금을 해제하면 제 질문이 생깁니 까? 나는 이것이 사소한 질문이라고 생각한다. 그러나 나는 이것과 같은 것을 찾아 보았고 공허 해졌다. 누군가가 이것을 밝히고 내 글/제목을 수정하여 미래에이를 찾는 사람에게 더 검색 가능하게 만들 수 있다면 크게 감사하겠습니다.대기 대기 스레드가 획득하는 잠금을 처리합니다.
AutoResetEvent signal = new AutoResetEvent(false);
foo() {
Monitor.Enter(locker);
try {
// code
if(condition)
signal.WaitOne();
// code
} finally {
Monitor.Exit(locker);
}
}
편집 : 나는 나중에 참조 할 수 있도록이 편집을 만드는 중이라서 :
그것은 내가 뭘하려고 오전이 있습니다 더 나은 패러다임처럼 보인다:
foo() {
Monitor.Enter(locker);
try {
// code
while(condition)
Monitor.Wait(locker);
// code
} finally {
Monitor.Exit(locker);
}
}
bar {
lock(locker) {
Monitor.Pulse(locker);
}
}
'signal.WaitOne'은'Monitor'가하는 것에 아무런 영향을주지 않습니다 ... –
@PeterRitchie - 의견을 남겨주세요! – Sandman
안녕하세요 @PeterRitchie - 나중에 참조 할 수 있도록 수정했습니다. 편집을 비준 할 수 있으면 고맙겠습니다. – Sandman