旗下导航:搜·么
当前位置:网站首页 > .Net教程 > 正文

C#多线程之Semaphore的运用详解【C#.Net教程】,Semaphore,csharp,.net

作者:搜教程发布时间:2019-11-27分类:.Net教程浏览:26评论:0


导读:这篇文章主要为人人细致引见了C#多线程之Semaphore用法,具有肯定的参考价值,感兴趣的小伙伴们能够参考一下Semaphore:可理解为许可线程实行信号的池子,池子中放...
这篇文章主要为人人细致引见了C#多线程之Semaphore用法,具有肯定的参考价值,感兴趣的小伙伴们能够参考一下

Semaphore:可理解为许可线程实行信号的池子,池子中放入若干个信号就许可若干线程同时实行。


private static void MultiThreadSynergicWithSemaphore()
  {
   //0示意建立Semaphore时,具有可用信号量数值
   //1示意Semaphore中,最多包容信号量数值
   Semaphore semaphore = new Semaphore(0, 1);


   Thread thread1 = new Thread(() =>
   {
    //线程起首WaitOne守候一个可用的信号量
    semaphore.WaitOne();
    //在取得信号量后,实行下面代码内容
    Console.WriteLine("thread1 work");
    Thread.Sleep(5000);
    //线程实行终了,将取得信号量开释(还给semaphore)
    semaphore.Release();
   });


   Thread thread2 = new Thread(() =>
   {
    semaphore.WaitOne();
    Console.WriteLine("thread2 work");
    Thread.Sleep(5000);
    semaphore.Release();
   });
   thread2.Start();
   thread1.Start();
   //因在建立Semaphore时具有的信号量为0
   //semaphore.Release(1) 为到场1个信号量到semaphore中
   semaphore.Release(1);
  }

申明:

1、假如semaphore.Release(n),n>semaphore最大包容信号量,将出非常。
2、当semaphore具有的信号量为1时,Semaphore相当于Mutex
3、当semaphore具有的信号量>1时,信号量的数目即可供多个线程同时猎取的个数,此时可以为猎取到信号量的线程将同时实行(实际情况可能与CPU核心数、CPU同时付出线程数有关)

以上就是C#多线程之Semaphore的运用详解的细致内容,更多请关注ki4网别的相干文章!

标签:Semaphorecsharp.net


欢迎 发表评论: