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

  • 相关阅读:
    python刷新七牛云CDN缓存
    python 操作redis
    redis 设置密码
    redis 允许其他机器连接设置方法
    redis持久化
    redis操作
    redis简介及与memcached比较
    dataframe 处理某列的小数位数并加特殊符号
    django 生成和下载CSV文件
    django 重定向
  • 原文地址:https://www.cnblogs.com/getpower/p/10308129.html
Copyright © 2011-2022 走看看