http://msdn.microsoft.com/en-us/library/system.threading.semaphoreslim.aspx
Bir semafor oluşturmak için, bir ilk sayım ve maksimum sayım sağlamam gerekiyor. MSDN, ilk sayımın -
Eşzamanlı olarak verilebilen semafor için ilk istek sayısı.
Maksimum sayının olduğunu belirtirken
Semafor için aynı anda verilebilecek maksimum istek sayısı.
Maksimum sayının bir kaynağa aynı anda erişebilen maksimum iş parçacığı sayısı olduğunu anlayabiliyorum. Ancak, ilk saymanın faydası nedir?
İlk sayısı 0 ve maksimum sayısı 2 olan bir semafor oluşturursam, iş parçacığı iş parçacıklarının hiçbiri kaynağa erişemez. İlk sayımı 1 ve maksimum sayımı 2 olarak ayarlarsam, yalnızca iş parçacığı havuzu iş parçacığı kaynağa erişebilir. Sadece hem ilk sayımı hem de maksimum sayımı 2 olarak ayarladığımda, 2 iş parçacığı kaynağa aynı anda erişebilir. Yani, ilk sayımın önemi konusunda gerçekten kafam karıştı mı?
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