C# SemaphoreSlim簡單介紹


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();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM