为什么我要用BeginWrite而不是Write ?

本文关键字:Write 我要 BeginWrite 为什么 | 更新日期: 2023-09-27 18:18:16

我正在开发一个管理多达30000个远程设备的服务。

做一些负载测试,似乎异步方法BeginWrite使用更多的资源,然后常规写(我认为由于需要创建一个回调线程的开销);另一方面,Write方法总是比BeginWrite返回得快。

所以我的问题是:选择BeginWrite的原因是什么?

另一个问题是:有什么理由为同步写设置一个WriteTimeout ?在哪些情况下,Write方法不会立即生成异常(例如,由于套接字关闭),但不会在合理的时间内完成?

EDIT:我有一组工作线程(32或64),所以我一次发送数据到500-1000个设备,Write似乎比BeginWrite更好。

EDIT 2:经过一点搜索,我明白只有当写缓冲区已满时,同步写才会挂起。默认的写缓冲区大小是8KB,我一次只发送1-2KB的数据,所以在我的应用程序中,写应该永远不会挂起,它的性能比BeginWrite更好。我将安全WriteTimeout设置为1秒

为什么我要用BeginWrite而不是Write ?

可伸缩性。

同步调用在完成时阻塞线程。Async方法则不然。根据要处理的并发请求的数量,这可能很重要。