zoukankan      html  css  js  c++  java
  • 多线程小记,线程控制并发

    private AutoResetEvent exitEvent;
    private void ProcessA()
    {
       while (true)
       {
           Console.WriteLine("do some thing");
           if (exitEvent.WaitOne(waitTime))
           {
           break;
         }
       }
      Console.WriteLine("exit");
    }
    exitEvent.Set();
    private void ProcessB()
    {
       while (true)
       {
           Console.WriteLine("do some thing");
          Thread.Sleep(waitTime)
       }
    }

    关于线程小模型,出现两个处理的函数,一个是简单的Sleep等待,一个是信号量,但是都有一个缺陷,就是不管是那个都在执行的时候(do some thing)无法退出。信号量好一些,在等待的时候可以控制退出,Sleep的话只能引发Exception来退出(或者在While设置flag,但是也一样)。

     public SemaphoreSlim semaphoreSlim = new SemaphoreSlim(10);//并发限制为10

    在多线程的模型里可以控制线程数量来控制并发

    semaphoreSlim.Wait();
    ThreadPool.QueueUserWorkItem(t => {
       Console.WriteLine("do some thing");
      semaphoreSlim.Release();
    });

    适合大量线程做相同事情的适合来控制并发,蛮有用的

  • 相关阅读:
    0Day – 2011.01.26
    JQuery_PHP 开始新的旅途
    0Day – 2011.01.25
    0Day – 2011.02.04
    Delphi 必须的一致.
    0Day – 2011.01.28
    0Day – 2011.02.23[From B4A]
    足球 看球悲惨的回忆.
    Delphi – EurekaLog6.1.01Ent下载地址
    ubuntu 拨号
  • 原文地址:https://www.cnblogs.com/RainbowInTheSky/p/9472342.html
Copyright © 2011-2022 走看看