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

  • 相关阅读:
    CollectionView网格布局
    UICollectionView基础/UICollectionViewCell的四种创建方式
    shiro
    jquery添加属性的方法
    ssm+activiti+maven
    Activiti流程定义部署方式
    00--工作流
    04--activiti demo
    02--Activiti初始化表
    01--安装Activiti流程设计器eclipse插件
  • 原文地址:https://www.cnblogs.com/getpower/p/10308129.html
Copyright © 2011-2022 走看看