在C#中,多进程通常使用System.Diagnostics.Process
类来实现
以下是一个简单的示例,展示了如何在C#中使用互斥锁(Mutex)在多进程环境下保护共享资源:
using System;
using System.Diagnostics;
using System.Threading;
namespace MutexExample
{
class Program
{
static void Main(string[] args)
{
// 创建一个全局互斥锁
using (Mutex mutex = new Mutex(false, "Global\\MyMutex"))
{
// 尝试获取互斥锁
if (mutex.WaitOne(0))
{
try
{
Console.WriteLine("进程 {0} 获取到互斥锁", Process.GetCurrentProcess().Id);
// 模拟访问共享资源
Thread.Sleep(2000);
}
finally
{
// 释放互斥锁
mutex.ReleaseMutex();
Console.WriteLine("进程 {0} 释放互斥锁", Process.GetCurrentProcess().Id);
}
}
else
{
Console.WriteLine("进程 {0} 无法获取互斥锁,其他进程正在使用", Process.GetCurrentProcess().Id);
}
}
}
}
}
在这个示例中,我们创建了一个全局互斥锁(Global\\MyMutex
)。当一个进程尝试获取互斥锁时,如果成功,则可以访问共享资源。如果失败,则表示其他进程已经获取了互斥锁并正在访问共享资源。
请注意,为了确保互斥锁在多进程环境下正常工作,需要使用全局命名(以Global\\
开头)。这样,不同进程之间就可以共享同一个互斥锁。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。