가능한 중복 :ASP.NET/C# 이벤트 차이
으로 ManualResetEvent과 AutoResetEvent의 차이점은 무엇입니까 What is the difference ManualResetEvent and AutoResetEvent in .net?? (예가 도움이 될 수 있음).
가능한 중복 :ASP.NET/C# 이벤트 차이
으로 ManualResetEvent과 AutoResetEvent의 차이점은 무엇입니까 What is the difference ManualResetEvent and AutoResetEvent in .net?? (예가 도움이 될 수 있음).
ManualResetEvent
은 마치 문이 열리면 누군가가 문을 닫을 때까지 사람들을 관통시킵니다.
AutoResetEvent
는 기차역의 개찰구와 같습니다. 일단 티켓을 넣으면 사람이 통과 할 수 있지만 한 명만 통과 할 수 있습니다.
다음은 예입니다. 5 개의 스레드가 모두 동일한 이벤트를 기다리고 있으며, 초당 1 회 설정됩니다. 수동 재설정 이벤트 인 경우 모두 스레드는 한 번 설정되면 바로 "게이트를 통과합니다". 자동 재설정 이벤트에서는 한 번에 하나만 이동합니다. ManualResetEvent
에 대한
using System;
using System.Threading;
class Test
{
static void Main()
{
// Change to AutoResetEvent to see different behaviour
EventWaitHandle waitHandle = new ManualResetEvent(false);
for (int i = 0; i < 5; i++)
{
int threadNumber = i;
new Thread(() => WaitFor(threadNumber, waitHandle)).Start();
}
// Wait for all the threads to have started
Thread.Sleep(500);
// Now release the handle three times, waiting a
// second between each time
for (int i = 0; i < 3; i++)
{
Console.WriteLine("Main thread setting");
waitHandle.Set();
Thread.Sleep(1000);
}
}
static void WaitFor(int threadNumber, EventWaitHandle waitHandle)
{
Console.WriteLine("Thread {0} waiting", threadNumber);
waitHandle.WaitOne();
Console.WriteLine("Thread {0} finished", threadNumber);
}
}
샘플 출력 :
Thread 0 waiting
Thread 4 waiting
Thread 1 waiting
Thread 2 waiting
Thread 3 waiting
Main thread setting
Thread 2 finished
Thread 1 finished
Thread 0 finished
Thread 4 finished
Thread 3 finished
Main thread setting
Main thread setting
샘플 출력 AutoResetEvent
에 대한 :
Thread 0 waiting
Thread 1 waiting
Thread 2 waiting
Thread 3 waiting
Thread 4 waiting
Main thread setting
Thread 3 finished
Main thread setting
Thread 2 finished
Main thread setting
Thread 1 finished
(이벤트로 여전히 기다리고있는 두 개의 스레드가 같은 프로그램은 다음 그냥 응답 설정하고 아무 것도 설정하지 않습니다.)
@ Fredrik. Jon이 완료하도록하십시오. 그의 예. 그럼 닫아. – Udana
@Udana : 나는 스스로 질문을 마무리 할 힘이 없다. 걱정 마. 또한 다른 질문에 코드 샘플이 없으므로이 질문에 대한 답변을 통해 추가 정보를 얻을 수 있다고 말했을 것입니다. –