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

  • 相关阅读:
    “ODBC驱动程序不支持动态记录集”错误的解决
    Pro *C/C++学习笔记(一)
    探讨全局变量的析构顺序
    指针和数组关系初探
    (转)Visual C++开发工具与调试技巧整理
    对利用Session纪录datagrid模板列中CheckBox的状态的一点改进
    大学老师列传
    重读保尔的意义
    Rich Edit控件的使用
    C++程序员常用工具集
  • 原文地址:https://www.cnblogs.com/getpower/p/10308129.html
Copyright © 2011-2022 走看看