http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx
세마포어를 만들려면 초기 개수와 최대 개수를 제공해야합니다. MSDN에 따르면 초기 횟수는 다음과 같습니다.
동시에 부여 할 수있는 세마포에 대한 초기 요청 수입니다.
최대 개수는
동시에 부여 할 수있는 세마포에 대한 최대 요청 수입니다.
최대 개수는 리소스에 동시에 액세스 할 수있는 스레드의 최대 개수라는 것을 알 수 있습니다. 그러나 초기 카운트의 사용은 무엇입니까?
초기 개수가 0이고 최대 개수가 2 인 세마포를 만들면 스레드 풀 스레드가 리소스에 액세스 할 수 없습니다. 초기 개수를 1로 설정하고 최대 개수를 2로 설정하면 스레드 풀 스레드 만 리소스에 액세스 할 수 있습니다. 초기 개수와 최대 개수를 모두 2 개로 설정 한 경우에만 2 개의 스레드가 동시에 리소스에 액세스 할 수 있습니다. 그래서, 나는 초기 카운트의 중요성에 대해 정말로 혼란 스럽습니까?
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(0, 2); //all threadpool threads wait
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1, 2);//only one thread has access to the resource at a time
SemaphoreSlim semaphoreSlim = new SemaphoreSlim(2, 2);//two threadpool threads can access the resource concurrently