zoukankan      html  css  js  c++  java
  • 多线程的并发控制

      当有多个线程同时访问有限制的资源时会出现并发情况,此时可以使用‘信号量’来控制访问资源的线程数量

            static void Main(string[] args)
             {

                    int taskCount = 10;//总线程数
                     int seatCount = 4;//资源访问最大线程数量
                     var semaphore = new SemaphoreSlim(seatCount,6);
                     var tasks = new Task[taskCount];
                     for (int i = 0; i < taskCount; i++)
                     {
                         tasks[i] = Task.Run(() => TaskRun(semaphore));
                     }
                     Task.WaitAll(tasks);
                     Console.WriteLine("All Tasks have finished!");
             }
             static void TaskRun(SemaphoreSlim semaphore)
             {
                 semaphore.Wait();
                 try
                 {
                     Console.WriteLine("Task {0} is Running!", Task.CurrentId);
                     Thread.Sleep(1000);
                 }
                 finally
                 {
                     Console.WriteLine("Task {0} have finished!", Task.CurrentId);
                     semaphore.Release();
                 }
             }

  • 相关阅读:
    appium启动android和iOS真机
    文本编辑器Sublime Text 3 -mac版简体中文汉化教程
    Navicat Premium Mac 安装
    mac下安装jmeter
    Pycharm 配置git
    mac下jdk安装配置
    WebDriverAgentRunner安装成功后build的常见报错
    WebDriverAgent入门篇-安装和使用
    macOS升级
    Bash on windows从14.0升级到ubuntu16.04
  • 原文地址:https://www.cnblogs.com/getpower/p/10308129.html
Copyright © 2011-2022 走看看