• 《C#多线程编程实战》2.4 SemaphoreSlim


    这个简单多了。

    理解也是很好理解。

    比上一个mutex好理解多了。

    这个SemaphoreSlim是干什么呢?

    就是限制线程的来访问。 好比说一次只有两个,一次只有三个  这样的线程来访问资源。

    有点像是加量不加价的lock方法。

    先上代码

      class Program
        {
            static SemaphoreSlim slim = new SemaphoreSlim(4);//限制一次性访问的线程的数量
            static void Main(string[] args)
            {
                for (int i = 1; i <=6;i++)
                {
                    var name = "Thread:_" + i;
                    int s = 2 + 2 * i;
                    var t = new Thread(() =>  AccessDatabase(name, s));
                    t.Start();
                }
                Console.ReadKey();
            }
            static void AccessDatabase(string name,int seconds)
            {
                Console.WriteLine($"{name} waites to ");
                slim.Wait();//线程等待
                Console.WriteLine($"{name} get data");
                Thread.Sleep(TimeSpan.FromMilliseconds(seconds));
                Console.WriteLine($"{name} is done");
                slim.Release();//释放线程
                Console.WriteLine($"{name} is close");
    
            }
        }

    这个是真好方便的。

    使用方式也是特别的简便。

    一 实例化

    二等待线程

    三释放线程

    就这么ez

    1    SemaphoreSlim slim = new SemaphoreSlim(4);//限制一次性访问的线程的数量
    2    slim.Wait();//线程等待       
    3    slim.Release();//释放线程

    这个 打一遍就会理解了。

    不多说了

  • 相关阅读:
    扩展VirtualBox虚拟机磁盘容量
    Java实现莱布尼兹问题
    Java实现子序列问题
    Java实现子序列问题
    Java实现子序列问题
    Java实现子序列问题
    Java实现子序列问题
    第九届蓝桥杯JavaC组省赛真题
    第九届蓝桥杯JavaC组省赛真题
    第九届蓝桥杯JavaC组省赛真题
  • 原文地址:https://www.cnblogs.com/T-ARF/p/9380709.html
Copyright © 2020-2023  润新知