如果我做的:無法同步兩個線程
ConsoleApp1:
bool mutexCreated;
var mutex = new Mutex(true, "MemoryMappedFileMutex", out mutexCreated);
Console.Write("Run Console App2 then press enter");
Console.Read();
// do work
Thread.Sleep(5000);
mutex.ReleaseMutex(); // makes console app 2 to stop waiting
ConsoleApp2
var mutex = Mutex.OpenExisting("MemoryMappedFileMutex");
mutex.WaitOne();
// continue executing once console app 1 releases mutex
一切都很正常。我必須先啓動consoleApp1,然後才能使用此算法。
現在我的問題是我會喜歡consoleApp2充當服務器。因此,我希望首先啓動該應用程序。問題是,如果我這樣做:
bool mutexCreated;
var mutex = new Mutex(true, "MemoryMappedFileMutex", out mutexCreated);
mutex.WaitOne(); // <------ mutex will not wait why????
如果我這樣做mutex.WaitOne()
線程不會等待。換句話說,我想首先啓動consoleApp2並讓該應用程序等待,直到我以某種方式在控制檯應用程序1上發出互斥信號。......
不要調用你的互斥鎖「MemoryMappedFileMutex」。互斥體名稱是全球性的。您冒着與使用該通用名稱的其他程序相沖突的風險。 – usr 2012-08-09 21:34:49