C#開発-Mutex(14.8)

I.概要

  • C#のMutexクラスは、スレッド同期操作にも使用されます。たとえば、複数のスレッドが同時にリソースにアクセスする場合、一度に1つのスレッドのみがリソースにアクセスできることが保証されます。

  • Mutexクラスでは、WaitOne()メソッドを使用してリソースが解放されるのを待機し、ReleaseMutex()メソッドを使用してリソースを解放します。

  • WaitOne()メソッドは、ReleaseMutex()メソッドが終了するまで終了しません。

<!-もっと->

2つの例スレッド相互除外を使用して、各駐車スペースが一度に1台の車しか駐車できないという機能を実現します 

2.1コード

<span style="color:#333333">class Program
{
    private static Mutex mutex = new Mutex();
    public static void PakingSpace(object num)
    {
        if (mutex.WaitOne())
        {
            try
            {
                Console.WriteLine("车牌号{0}的车驶入!", num);
                Thread.Sleep(1000);
            }
            finally
            {
                Console.WriteLine("车牌号{0}的车离开!", num);
                mutex.ReleaseMutex();
            }
        }
    }
    static void Main(string[] args)
    {
        ParameterizedThreadStart ts = new ParameterizedThreadStart(PakingSpace);
        Thread t1 = new Thread(ts);
        t1.Start("冀A12345");
        Thread t2 = new Thread(ts);
        t2.Start("京A00000");
    }
}</span>

2.2結果

 

2.3説明

上記の走行効果から、各車が出入りした後、他の車が駐車スペースを占有できる、つまり、スレッドがリソースを占有している場合、他のスレッドはそのリソースを使用しないことがわかります。

 

おすすめ

転載: blog.csdn.net/Calvin_zhou/article/details/107831409