套接字同步发送优于async beginsend / endsend?

时间:2012-06-04 20:23:57

标签: c# sockets networking asynchronous

我正在编写支持大量(50,000+)连接的tcp服务器,我发现了这一点。

同步发送至少比异步发送的次数高3倍。除了这两行之外,这些程序是相同的:

m_socket.Send(sendingBuffer, length, SocketFlags.None);

m_socket.BeginSend(sendingBuffer, 0, length, 0, new AsyncCallback(SendCallback), this);

在SendCallback中,我只是调用EndSend,没有别的。

这种巨大的性能差异来自哪里?是不是异步方法应该表现更好?

1 个答案:

答案 0 :(得分:3)

异步方法通常然后是同步方法(由于涉及实现中的一些额外开销),但如果您需要执行它们,则整体“更快”正在执行 - 如果你只是等待他们完成,他们完全没必要。