我运行下面的代码,期望在我第二次锁定互斥锁时锁定流。运行它两次后,我意识到它可以多次锁定(假设在同一个线程中)而不会停止。我该如何改变这种行为?
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
namespace Test {
class Program {
static volatile Mutex mut1 = new Mutex();
static volatile Mutex mut2 = new Mutex();
static void Main(string[] args) {
mut1.WaitOne(); Console.WriteLine("1W");
mut2.WaitOne(); Console.WriteLine("2W");
Thread oThread = new Thread(new ThreadStart(fn2));
oThread.Start();
mut1.WaitOne(); Console.WriteLine("1W");
Console.WriteLine("Second");
mut1.ReleaseMutex(); Console.WriteLine("1R");
}
static void fn2() {
Console.WriteLine("First");
mut2.ReleaseMutex(); Console.WriteLine("2R");
mut1.ReleaseMutex(); Console.WriteLine("1R");
}
}
}