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 = 0; i <= 5; i++) { 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으로 동시 쓰레드 실행 제한
위 코드의 자세한 사항은 바로 이전 포스트를 보면 알 수 있을 것이다.
'.Net Framework' 카테고리의 다른 글
[Utility]Sysinternals System Information Utilities (0) | 2013.03.04 |
---|---|
[Utility]Sysinternals Process Utilities (0) | 2013.03.04 |
[C# Thread] Thread 동기화 - Semaphore(세마포어) - C# (0) | 2013.02.27 |
[C# Async]Task-based Asynchronous Pattern - TAP(1) Async #7 (0) | 2013.02.26 |
[C# Async]Event-based Asynchronous Pattern - EAP(4) Async #6 (0) | 2013.02.26 |