这是一个可扩展的命名管道服务器实现吗?

时间:2010-02-06 17:45:45

标签: windows performance winapi network-programming named-pipes

使用MSDN中的Overlapped I / O查看这个命名管道示例,我想知道它是多么可扩展?如果你启动了十几个客户端并让它们以10x / sec的速度点击服务器,每一批10个紧接着另一个,在睡眠一整秒之前,似乎最终客户端的一些实例被饿死了。

服务器实施: http://msdn.microsoft.com/en-us/library/aa365603%28VS.85%29.aspx

客户端实现(假设调用是10x / sec,并且有十几个实例)。 http://msdn.microsoft.com/en-us/library/aa365603%28VS.85%29.aspx

1 个答案:

答案 0 :(得分:1)

网页指出:

  • 管道服务器创建固定数量的管道实例。

  • 虽然该示例显示了对不同管道实例的同时操作,但它通过使用OVERLAPPED结构中的事件对象避免了对单个管道实例的同时操作。因为相同的事件对象用于每个实例的读取,写入和连接操作,所以无法知道哪个操作的完成导致事件被设置为使用相同管道实例的同时操作的信号状态

你可以安全地假设它不具备可扩展性;毕竟这是一个API使用示例;功能演示通常是此类代码最重要的设计约束。

如果您需要12个客户端每秒建立10个连接,那么我个人让服务器能够处理超过12个客户端以允许服务器准备新客户端连接的时间段...个人而言我'切换到使用套接字,但那只是我(而且我是这样的,因为我已经完成了很多高性能套接字的工作,因此拥有所有代码)......