命名管道到底是全双工还是半双工?
如题,请教一下,我看很多文章上说的,匿名管道是单工模式,命名管道是全双工模式。
但是我读阻塞之后,就不能写了,这种应该是半双工吧?想socket那种读阻塞不影响写才是全双工,还是我哪里写错了?
示例代码如下:
using System.IO.Pipes;
using System.IO;
static void Main(string[] args)
{
NamedPipeServerStream pipeServer = new NamedPipeServerStream(PIPENAME, PipeDirection.InOut, maxInstrances);
new Thread(delegate()
{
pipeServer.WaitForConnection();
StreamReader sr = new StreamReader(_pipeServer, Encoding.ASCII);
StreamWriter sw = new StreamWriter(_pipeServer, Encoding.ASCII);
new Thread(delegate()
{
while (true)
{
string str = sr.ReadLine();
//处理客户端传递数据 balabalabala
}
}).Start();
_sw.WriteLine("HB");
_sw.Flush();
}).Start();
Console.ReadLine();
}
程序如果先在sr.ReadLine();阻塞住了的话,_sw.Flush();也会阻塞住...