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

보기: 17115|회답: 0

[통신] .net/c#에서 AutoResetEvent에 대한 자세한 설명

[링크 복사]
게시됨 2018. 3. 20. 오후 1:19:01 | | |

스레드 관련 개념
1. 스레드 동기화
ManualResetEvent
Set() 메서드는 상태를 신호 상태로 설정합니다
Reset()를 신호 없음으로 설정하기 위해
WaitOne()은 신호가 올 때까지 차단하며, WaitOne을 호출할 때 신호가 있으면 차단하지 않습니다
AutoResetEvent
ManualResetEvent와의 차이점은 AutoResetEvent.WaitOne()이 이벤트 객체의 상태를 자동으로 변경한다는 점입니다. 즉, AutoResetEvent.WaitOne() 실행 시 이벤트 상태가 변한다는 뜻입니다. 신호 - 신호 없음>; 신호가 없으면 신호가 >
example:


  
myResetEven.Set()은 실제로 스위치와 동등하며, set() 메서드가 실행되지 않으면 다음 waitOne()은 실행을 허용하기 위해 알림을 기다릴 수 없으므로 waitOne 이후의 문장은 실행되지 않습니다.
모니터 방법
Wait() Pulse() 메커니즘은 스레드 간 상호작용에 사용되며, 객체가 Monitor.Wait(를 방출하면) 해당 객체에 접근하는 스레드는 대기 상태를 유지합니다. 깨우는 신호가 올 때까지. Monitor.Pulse()는 대기 스레드에 신호를 보내는 데 사용됩니다.
즉, Monitor.Enter()와 Monitor.Exit() 사이의 중요한 영역에서 객체의 잠금을 해제하고 현재 스레드를 차단하기 위해 대기 상태에 있습니다.

Lock은 Mutex와 다릅니다
여러 스레드 간 잠금 동기화
Mutex 프로세스 간 다중 스레드 동기화 또는 여러 프로세스 동기화
.Net 멀티스레드 프로그래밍에서는 AutoResetEvent와 ManualResetEvent 클래스가 자주 사용되며, 사용법은 매우 유사하지만 차이점도 있습니다. Set 메서드는 신호를 송신 상태로 설정하고, Reset 메서드는 신호를 전송하지 않은 상태로 하며, WaitOne은 신호가 전송될 때까지 기다립니다. 구성자의 초기 상태는 매개변수 값으로 결정할 수 있으며, 참이면 차단 상태가 아니고, false는 차단 상태입니다. 스레드가 WaitOne 메서드를 호출하면, 스레드는 전송 상태에 있을 때 신호를 받고 계속 아래로 실행됩니다. 차이점은 호출 후 AutoResetEvent.WaitOne()은 한 번에 한 스레드만 들어갈 수 있게 하며, 스레드가 신호를 받으면 AutoResetEvent가 자동으로 신호를 no send 상태로 전환하며, WaitOne을 호출하는 다른 스레드들은 계속 대기만 할 수 있다는 점입니다. 즉, AutoResetEvent는 한 번에 한 스레드씩만 깨우며; ManualResetEvent는 여러 스레드를 깨울 수 있는데, 이는 한 스레드가 ManualResetEvent.Set() 메서드를 호출하면 WaitOne을 호출하는 다른 스레드들이 실행 계속 신호를 받고, ManualResetEvent는 자동으로 신호를 전송 중지로 설정하지 않기 때문입니다. 즉, ManualResetEvent.Reset() 메서드가 수동으로 호출되지 않는 한, ManualResetEvent는 신호를 유지하며 ManualResetEvent가 여러 스레드를 동시에 깨워 실행을 계속할 수 있습니다.




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

Mail To:help@itsvse.com