[.Net]指定多个线程进入代码块

多线程的使用非常普遍,有了多线程就必然提到锁的概念。锁区域的代码块只允许一个线程进入。还有一种信号量SemaphoreSlim 的用法,能够支持指定多个线程进入。这里特意记录一下。

        static readonly SemaphoreSlim slim = new SemaphoreSlim(2);
        static void Main(string[] args)
        {
            for (int i = 0; i < 5; i++)
            {
                ThreadPool.QueueUserWorkItem(Test, i);
            }
            Console.ReadLine();
        }
 
        private async static void Test(object i)
        {
            Console.WriteLine("准备执行" + i);
            await slim.WaitAsync();
            Console.WriteLine("开始执行" + i);
            //todo other
            await Task.Delay(1000);
            Console.WriteLine("执行结束" + i);
            slim.Release();
        }

运行结果可以看到“开始执行”只会有两个并存。


[.Net]指定多个线程进入代码块_第1张图片
image.png

你可能感兴趣的:([.Net]指定多个线程进入代码块)