首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命名管道(net.pipe)的限制是什么?

命名管道(net.pipe)的限制是什么?
EN

Stack Overflow用户
提问于 2012-09-13 11:23:53
回答 1查看 2.1K关注 0票数 3

我有一个循环运行的程序,每次迭代运行在不同的线程中,我正在创建打开新服务主机的新进程:

代码语言:javascript
复制
ServiceHost _host = new ServiceHost(_service, new Uri("net.pipe://localhost/" + i_PipeName));
_host.AddServiceEndpoint(typeof(ICommandService), new NetNamedPipeBinding() { TransferMode = TransferMode.Buffered }, i_PipeName);
_host.Open();

从我的主程序中,我按以下方式连接到打开的.net管道:

代码语言:javascript
复制
ICommandService ServiceProxy = ChannelFactory<ICommandService>.CreateChannel
(new NetNamedPipeBinding(), new EndpointAddress(@"net.pipe://localhost/" + i_PipeName" + @"/" + i_PipeName));

因此,我的问题是,对于第一个200+过程/迭代(它很好地工作),我可以打开连接并传递消息,但随后会出现错误:

没有端点可以接收消息,可以侦听net.PIPE://localhost/pipea0360 0360/pipea0360 0360。这通常是由不正确的地址或SOAP操作造成的。有关更多详细信息,请参见InnerException。

我的问题是,我可以平行打开的管道数目是否有限制?

是因为我打开了这么多的程序吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-13 19:10:20

您是否排除了竞争条件,即客户端试图连接到服务器尚未建立的管道?如果服务器上有很多活动线程,那么它可以很容易地延迟本应开始侦听的线程。这可以解释为什么它在一开始就起作用了。

通常,为每个客户端设置一个服务器线程并不能很好地扩展;使用线程池方法可以获得更好的性能。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12405134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档