您好,登錄后才能下訂單哦!
在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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。