이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 24412|회답: 1

[출처] C# 스레드가 학습하는 ManualResetEvent와 AutoResetEvent의 차이점

[링크 복사]
게시됨 2018. 5. 31. 오후 2:59:47 | | | |
먼저 ManualResetEvent에 대해 이야기해보고, 토론 중에 AutoResetEvent 관련 내용을 삽입해 비교해 보겠습니다:

ManualResetEvent는 현재 스레드를 차단하지 말라는 신호가 도착할 때까지 하나 이상의 스레드를 차단할 수 있습니다.

ManualResetEvent 정보

.net/c# 스레드 스레드 일시 중지 및 재개 구식 솔루션
https://www.itsvse.com/thread-4769-1-1.html
(출처: Architect_Programmer)


ManualResetEvent 객체가 현재 스레드를 차단할지 여부를 제어하는 불리언 타입 속성인 IsRelease를 가지고 있다고 상상해 보세요. 초기화 시 이 속성을 설정할 수 있습니다. 예를 들어 ManualResetEvent event=new ManualResetEvent(false); 이는 기본 특성이 현재 스레드를 차단하는 것임을 나타냅니다.

코드 예시:



여기서 ManualResetEvent와 AutoResetEvent 간의 중요한 차이점을 주목하세요:

수동 모드는 확실히 스레드 1과 스레드 2 모두에 신호를 보냅니다.자동 모드는 무작위로 한 쪽에만 신호를 보냅니다.

왜 하나는 수동이고 다른 하나는 자동이라고 불리나요? 이 질문은 많은 사람들이 갖고 있는 것이고, 이제 이 질문을 살펴보겠습니다.

그냥 now_manualResetEvent. Set(); 이 문장은 모두 이해할 수 있을 것 같은데, 이는 IsRelease의 속성을 진으로 설정하는 것으로 볼 수 있습니다

_manualResetEvent.WaitOne(); 신호를 받은 후 스레드 1을 더 이상 차단하지 않습니다. IsRelease의 가치는 그 이후 전 과정 전반에 걸쳐 진실입니다.

IsRelease 값을 false로 반환하고 싶다면 _manualResetEvent.Reset() 메서드를 다시 호출해야 합니다.

만약 _autoResetEvent.set()이라면, _autoResetEvent.WaitOne()은 IsRelease 값을 자동으로 false로 설정합니다.

그래서 하나는 자동, 다른 하나는 수동이라고 불리는 거예요.



테스트 코드:







이전의:. .NET에서 가장 빠른 OOM 객체 매핑 컴포넌트인 Tiny Mapper 프로젝트에서 사용되었습니다
다음:C# DEBUG 디버그 정보 인쇄 및 상세 설명 출력
 집주인| 게시됨 2024. 12. 18. 오후 8:30:44 |
ManualResetEvent와 AutoResetEvent 모두 다음에서 상속됩니다.이벤트대기핸들, 아래 그림에서 볼 수 있습니다:



참조:하이퍼링크 로그인이 보입니다.

면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com