執行MemoryMappedFile流式傳輸時出現小問題。 我有2個項目,一個用於發送字節,另一個用於讀取字節。這兩個進程之間應該是一個2秒鐘的睡眠計時器。與MemoryMappedFile流式傳輸的死鎖
我已經實現了所有這些,但是當軟件嘗試執行讀取時,它似乎遇到了死鎖。這兩個過程的代碼如下。
任何人都可以幫我找到問題嗎?
namespace ProcesComunication
{
class Program
{
static void Main(string[] args)
{
MemoryMappedFile mmf = MemoryMappedFile.CreateNew("AAB", 1024);
MemoryMappedViewStream mStream = mmf.CreateViewStream();
BinaryWriter bw = new BinaryWriter(mStream);
Mutex mx = new Mutex(true, "sync");
while (true)
{
Thread.Sleep(2000);
Console.WriteLine("TEST");
bw.Write(DateTime.Now.ToString());
mx.ReleaseMutex();
}
bw.Close();
mStream.Close();
}
}
}
namespace ProcesRead
{
class Program
{
static void Main(string[] args)
{
MemoryMappedFile mmf = MemoryMappedFile.OpenExisting("AAB");
MemoryMappedViewStream mStream = mmf.CreateViewStream();
BinaryReader br = new BinaryReader(mStream);
Mutex mx = Mutex.OpenExisting("sync");
while (true)
{
mx.WaitOne();
Console.Write(br.ReadString());
mx.ReleaseMutex();
}
br.Close();
mStream.Close();
}
}
}
準確地說,描述出現死鎖的位置/時間。寫作開始了嗎? – 2012-01-13 09:47:03
作者將通過循環第二次在ReleaseMutex調用中崩潰。它沒有獲得互斥體。單個互斥體不足以同步讀寫器。你真的想在這裏使用一個命名管道。 – 2012-01-13 13:12:57