C# SemaphoreSlim簡單介紹
當多個任務或線程並行運行時,難以避免的對某些有限的資源進行並發的訪問。可以考慮使用信號量來進行這方面的控制(System.Threading.Semaphore)是表示一個Windows內核的信號量對象。如果預計等待的時間較短,可以考慮使用SemaphoreSlim,它帶來的開銷更小。如果需要有跨進程或AppDomain的同步時,可以考慮使用Semaphore.Semaphore是取得的Windows內核的信號量,所以在整個系統中是有效的。它主要的接口是Release和WaitOne,使用的方式和SemaphoreSlim是一致的
該類可以限制同時訪問同一資源的線程數量。
static void Main(string[] args)
{
SemaphoreSlim slim = new SemaphoreSlim(4);//允許最多4個線程
foreach(int index in Enumerable.Range(1, 100))
{
Task.Run(() => {
slim.Wait();
Console.WriteLine($"這是{index}");
Thread.Sleep(2000);//等待2秒
slim.Release();
});
}
Console.ReadKey();
}
