美文网首页
[.Net]指定多个线程进入代码块

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

作者: 无衔 | 来源:发表于2018-08-20 11:02 被阅读11次

多线程的使用非常普遍,有了多线程就必然提到锁的概念。锁区域的代码块只允许一个线程进入。还有一种信号量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();
        }

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


image.png

相关文章

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

    多线程的使用非常普遍,有了多线程就必然提到锁的概念。锁区域的代码块只允许一个线程进入。还有一种信号量Semapho...

  • 多线程之volatile

    volatile Synchronized 同步锁给多个线程访问的代码块加锁以保证线程安全性。多线程之Synchr...

  • 并发四:同步原语synchronized详解

    synchronized语义 synchronized又被称为内置锁,线程进入同步代码块时会获得该锁,退出代码块自...

  • 多个线程多个锁

    多个线程多个锁:多个线程,每个线程都可以拿到自己指定的锁,分别获得锁之后,执行synchronized方法体的内容...

  • 多线程(二)线程同步

    一、线程同步 一块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源。当多个线程访问同一块资源时,很容易...

  • Java中的对象级别锁和类级别锁

    在Java中,synchronized代码块一次只能由一个线程执行。此外,java支持并发执行多个线程。这可能导致...

  • (六)iOS开发之多线程—多线程安全性

    一.多线程资源共享问题: 1.1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同...

  • sychronized原理

    偏向锁适合在只有一个线程执行同步代码时,提升性能线程进入同步代码块是,会通过CAS(compare and swa...

  • python多线程同步(1)——锁

    多线程同步(1)——锁 多线程编程中,总会有一些函数或者代码块我们不希望它被多个线程同时执行。线程之间发生竞争,会...

  • iOS线程同步(各种锁)

    线程安全 在iOS开发中经常会遇到一块资源被多个线程共享的情况,也就是多个线程会访问同一块资源,比如多个线程访问同...

网友评论

      本文标题:[.Net]指定多个线程进入代码块

      本文链接:https://www.haomeiwen.com/subject/jmukiftx.html