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