从多个线程调用TcpListener.AcceptTcpClient方法

时间:2019-05-07 15:51:50

标签: c# .net sockets

到目前为止,在大多数示例中,当服务器同时处理多个客户端时,将以以下代码为例

int port = 13000;
TcpListener server = new TcpListener(IPAddress.Any, port);
server.Start();

while (true) {
    // Perform a blocking call to accept requests.
    // You could also user server.AcceptSocket() here.
    TcpClient client = server.AcceptTcpClient();
    //Do stuff
}

为了增加重负载下的吞吐量,至少这是我希望达到的目标,我当时想在4个左右的线程中调用AcceptTcpClient方法。但是,我不确定这是否是线程安全的,还是建议使用它的方式?

我担心的情况是当我突然出现连接中断时,例如数百个客户端正在连接到我的服务器。此外,当我查看TcpClient的Start方法时,我也注意到了积压参数。使用积压是更好的方法?我应该只听一个线程,而将繁重的工作留给积压算法吗?

0 个答案:

没有答案