【发布时间】:2011-12-01 17:59:35
【问题描述】:
我正在尝试在 .NET 3.5 中使用 HttpWebRequest 和 HttpWebResponse,以异步方式运行它们:BeginGetRequestStream、EndGetRequestStream、BeginWrite、EndWrite、BeginGetResponse、EndGetResponse、BeginRead、EndRead - 处理请求的所有部分都是异步的。
我有几个线程发送大量并发请求。 EndRead 和 EndWrite 都是阻塞操作——它们阻塞当前线程,同时对流的实际读/写完成,我正在尝试为这些操作提供一个理想的输入/输出缓冲区大小。
我的理由是:由于我有多个请求同时处于活动状态,它们会不断触发回调以让线程知道有一些数据可用或已发送数据。如果我的缓冲区很大,通过线路读取/写入数据将花费更长的时间,因此 EndRead/EndWrite 将阻塞更长的时间。这将迫使同一线程上的其他请求等待更长的时间,因为它们的通知必须等到线程被解除阻塞。
所以,我的问题是,在这种情况下,什么是好的读/写缓冲区大小。我在想每个 2048 字节,但我在各种博客中看到的一些示例代码显示了截然不同的值。
提前感谢您的任何想法。
【问题讨论】:
标签: c# asynchronous httpwebrequest httpwebresponse