您好,登錄后才能下訂單哦!
在C#中,可以使用多種方法來實現多進程并發控制。這里我們將介紹兩種常見的方法:使用Mutex
和使用Semaphore
。
Mutex
(互斥量):Mutex
是一個同步原語,用于確保多個線程或進程不會同時訪問共享資源。以下是一個使用Mutex
實現多進程并發控制的示例:
using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
using (var mutex = new Mutex(false, "MyMutex"))
{
for (int i = 0; i < 5; i++)
{
var process = new Process();
process.StartInfo.FileName = "notepad.exe";
process.Start();
mutex.WaitOne(); // 等待獲取互斥量
Console.WriteLine($"Process {i} started.");
Thread.Sleep(1000); // 模擬進程執行時間
process.Kill();
Console.WriteLine($"Process {i} killed.");
mutex.ReleaseMutex(); // 釋放互斥量
}
}
}
}
Semaphore
(信號量):Semaphore
是一個同步原語,用于限制可以同時訪問共享資源的線程或進程數量。以下是一個使用Semaphore
實現多進程并發控制的示例:
using System;
using System.Diagnostics;
using System.Threading;
class Program
{
static void Main(string[] args)
{
using (var semaphore = new Semaphore(3, 3, "MySemaphore"))
{
for (int i = 0; i < 5; i++)
{
var process = new Process();
process.StartInfo.FileName = "notepad.exe";
process.Start();
semaphore.WaitOne(); // 等待獲取信號量
Console.WriteLine($"Process {i} started.");
Thread.Sleep(1000); // 模擬進程執行時間
process.Kill();
Console.WriteLine($"Process {i} killed.");
semaphore.Release(); // 釋放信號量
}
}
}
}
在這個示例中,我們創建了一個最大并發進程數為3的信號量。當有更多的進程需要訪問共享資源時,它們將等待直到有可用的信號量。這樣可以確保同時運行的進程數不超過3個。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。