套接字同步发送优于异步开始发送/结束发送

本文关键字:开始 异步 结束 同步 于异步 套接字 | 更新日期: 2023-09-27 18:36:12

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

同步发送的

执行性能至少是异步发送的 3 倍。除了这两行之外,程序是相同的:

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

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

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

这种巨大的性能差异从何而来? 异步方法不是应该表现得更好吗?

套接字同步发送优于异步开始发送/结束发送

异步方法通常比同步方法(由于在实现中涉及一些额外的开销),但如果你需要在它们执行做一些事情,总体上"更快"——如果你只是在等待它们完成,它们是完全不必要的。