Я пытаюсь использовать HttpWebRequest и HttpWebResponse в .NET 3.5, выполняя их асинхронно: BeginGetRequestStream, EndGetRequestStream, BeginWrite, EndWrite, BeginGetResponse, EndGetResponse, BeginRead, EndRead - все части обработки запроса асинхронны.
У меня есть несколько потоков, которые отправляют большое количество одновременных запросов. EndRead и EndWrite являются блокирующими операциями - они блокируют текущий поток, пока выполняется фактическое чтение / запись в потоке, я пытаюсь найти идеальный размер буфера ввода / вывода для этих операций.
Мое рассуждение таково: поскольку у меня есть несколько активных запросов одновременно, они будут продолжать запускать обратные вызовы, чтобы поток знал, что какие-то данные доступны или данные были отправлены. Если мои буферы большие, чтение / запись данных по сети займет больше времени, поэтому EndRead / EndWrite будет блокироваться дольше. Это заставит другие запросы в том же потоке ждать немного дольше, поскольку их уведомления должны будут ждать, пока поток не будет разблокирован.
Итак, у меня вопрос: какой размер буфера чтения / записи будет хорошим в этой ситуации? Я думал о 2048 байтах каждый, но некоторые примеры кода, которые я видел в разных блогах, показывают совершенно разные значения.
Заранее спасибо за любые идеи.