C# SemaphoreSlim


2013/02/27 - [.Net Framework] - [Threading] Semaphore(세마포어) - C#



 지난 포스트에서 소개 했던 세마포어(Seamphore) 대신에 Windows 커널 세마포어를 사용하지 않는 간단한 클래스이다. 사용목적은 세마포어와 같으며 사용방법은 다음 코드를 보자

//한번에 허용할 수 있는 최대 쓰레드 수
private static int _maximumThreads = 3;
 
/// <summary>
/// SemaphoreSlim으로 동시 쓰레드 갯수 제한 테스트
/// </summary>
[TestMethod]
public void SemaphoreSlim_TestMethod()
{
    SemaphoreSlim ss = new SemaphoreSlim(0_maximumThreads);
 
    for (int i = 0i <= 5i++)
    {
        Thread thread = new Thread(new ThreadStart(() =>
        {
            ss.Wait();
            Thread.Sleep(100);
            Debug.WriteLine("{0} 실행 됨."Thread.CurrentThread.Name);
            ss.Release();
        }));
 
        thread.Name = String.Concat("Thread "i + 1);
        thread.Start();
    }
 
 
    Thread.Sleep(300);
    ss.Release(_maximumThreads);
 
    ss.AvailableWaitHandle.WaitOne();
    Debug.WriteLine("ss.CurrentCount after ss.Wait() = {0}"ss.CurrentCount);
}

[코드1] SemaphoreSlim으로 동시 쓰레드 실행 제한


 위 코드의 자세한 사항은 바로 이전 포스트를 보면 알 수 있을 것이다.





+ Recent posts