【发布时间】:2014-06-12 14:44:02
【问题描述】:
我有创建多个线程的代码,所有线程都尝试将信息记录在单个文件中
我尝试使用互斥锁登录文件,但是当我使用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();
}
【问题讨论】:
-
您应该已经添加了一个标签来指示您正在使用的语言。通过查看类名/命名空间,我假设您使用的是 C#。
-
你试过文档here吗?
-
参见 MSDN:msdn.microsoft.com/en-us/library/f55ddskf(v=vs.110).aspx - 基本上,一个 named 互斥锁可以从多个地方访问 - 包括跨进程甚至跨用户(如果是全局的)。匿名互斥锁是唯一且孤立的
-
缺少哪些日志信息?您的代码是否演示了日志的编写?
标签: c# multithreading mutex