zoukankan      html  css  js  c++  java
  • 《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();//释放线程

    这个 打一遍就会理解了。

    不多说了

  • 相关阅读:
    tomcat进阶操作
    tomcat环境部署
    CentOS 7.2安装lepus数据库监控系统
    常见的Linux系统监控命令
    zabbix使用jmx监控tomcat
    zabbix配置文件详解
    zabbix2.2.22 升级3.0.18
    zabbix日志监控
    zabbix api的使用
    zabbix低级自动发现之mysql多实例
  • 原文地址:https://www.cnblogs.com/T-ARF/p/9380709.html
Copyright © 2011-2022 走看看