我有创建多个线程的代码,所有线程都尝试将信息记录在一个文件中
我尝试使用互斥锁来登录文件,但是当我使用Mutex()
和Mutex(true or false, "name")
对象时,我会得到不同的响应。
Mutex()
给出了正确的预期结果,但Mutex(true/false, "myname")
缺少一些日志信息。
那么他们之间有什么区别?
System.Threading.Mutex mtx = new System.Threading.Mutex(false ,"Myname" );
try
{
try
{
mtx.WaitOne();
}
catch (AbandonedMutexException)
{ }
//log into file
}
catch (Exception)
{
Console.WriteLine("EXCEPTION CAUGHT ***");
}
finally
{
mtx.ReleaseMutex();
mtx.Close();
}
答案 0 :(得分:3)
调用此构造函数重载与调用Mutex(布尔)构造函数重载并为互斥锁的初始所有权指定false相同。也就是说,调用线程不拥有互斥锁。
第二个参数仅为互斥锁提供名称。因此,例如,如果另一个进程创建具有相同名称的互斥锁,则将在这两个进程之间共享现有互斥锁。