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();
                 }
             }

  • 相关阅读:
    宏 定 义 编 译 出 错
    SSWR 跟 进一法除法
    显示文件后缀扩展名
    基于MPLAB X IDE配置位设置讲解
    mplab xIde 编译成功,但不能生成Hex文件
    InputStream 、 InputStreamReader 、 BufferedReader
    MPLAB® XC C编译器的Workstation License的获取及安装方法
    MPLAB设置路径
    js中的cookie及封装
    nodejs中使用node-sass
  • 原文地址:https://www.cnblogs.com/getpower/p/10308129.html
Copyright © 2011-2022 走看看