【问题标题】:Thread pool multiclient TCP (Messagehandling)线程池多客户端 TCP(消息处理)
【发布时间】:2012-08-27 15:25:05
【问题描述】:

我刚刚了解到您可以将线程池​​用于多客户端 TCP 连接,我今天有一个 C# 应用程序,我喜欢实现它。我已经阅读了一些,例如这个问题的第一个答案(Best way to accept multiple tcp clients?),但我真的不知道如何根据我的“需求”进行最后的调整。我对每个连接都有一个消息处理功能(每个连接是 2 个线程,一个用于接收/发送消息(连接大部分时间打开很长时间),一个用于根据消息执行任务(也创建发送回的答案) . 我现在想使用下面链接中的接收方法,但是在我的示例中如何使用线程池来做到这一点?

如果有任何不清楚的地方,请提出问题!

/尼克

【问题讨论】:

  • 谢谢!但我真的不认为这能处理我的例子。我如何根据消息执行任务的特定部分(也创建发送回的答案)。例如,当我收到特定消息时,我想向其他客户端发送答案(新消息),我如何跟踪套接字/客户端?例如:Client 1 说:发送这个 msg 给 Client 2,我怎么知道什么 socket 是什么客户端?
  • 我发布它不是为了使用它。它展示了如何使用异步操作。

标签: c# multithreading tcp client threadpool


【解决方案1】:

只是避免每个连接有一个线程。它会在操作系统上产生大量开销并且不能很好地扩展。

今天我们使用 NIO:非阻塞 I/O。一个线程可以处理 10k+ 个连接。使用它们的方法非常简单,例如 NodeJs。 NIO 库可用于大多数平台/语言(Netty for Java、NodeJs with javascript...)。

您应该指定您正在使用的语言/环境。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-04-27
  • 2012-09-26
  • 2012-05-16
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多