C# 异步操作Task类使用(二)

一、多线程同步

何为线程同步,其实就是数据串行操作,当前当前的资源在没有操作完毕之前,不允许其他的线程对同一资源进行操作。即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作, 其他线程才能对该内存地址进行操作,而其他线程又处于等待状态,实现线程同步的方法有很多,互斥量就是其中一种。

在C#中使用互斥量 Mutex即可进行线程同步。

using System; using System.Threading;
class MutexSample

{    

    private static Mutex mutex = null;  //设为Static成员,是为了在整个程序生命周期内持有Mutex

    static void Main()   

    {        

       bool firstInstance;   

        mutex = new Mutex(true, @"Global\MutexSampleApp", out firstInstance);   

         try       

         {             

    if (!firstInstance)  

               {               

          Console.WriteLine ("已有实例运行,输入回车退出……");

                    Console.ReadLine();               

           return;

               }

              else  

             {

                   Console.WriteLine ("我们是第一个实例!");   

                  for (int i=60; i > 0; --i)                

                  {

                       Console.WriteLine (i);

                       Thread.Sleep(1000);

                  }

            }

        }

        finally  

       {            

           //只有第一个实例获得控制权,因此只有在这种情况下才需要ReleaseMutex,否则会引发异常。

            if (firstInstance)   

            {                

       mutex.ReleaseMutex();

            }            

        mutex.Close();

                  mutex = null;

        }

    }

}

上一篇:Vue键盘事件


下一篇:[JS Pattern] Mixin Pattern