Ну, в течение одного времени жизни сокета каждая операция начала / конца будет выделять новый объект синхронизации.
Например, ваша логика такова:
// GET /default.aspx HTTP/1.1<cr-lf>
ReadLine for Http Verb and Version
// Headers
ReadLine till you get empty line and process header
// Data
Read or process mime data
Теперь, если вы заметите, мы никогда не будем читать все в одном вызове начала / конца, вместо этого каждая операция вызовет множественные начало / конец, которые создадутновый объект синхронизации.
Но все эти шаги предназначены только для одного соединения клиент / сервер.
Таким образом, ваш объект запроса / ответа будет только один в течение всего времени жизни сокета, и в этом случае вам лучше использовать новый метод Async и оставить свой объект запроса / ответа как один единственный объект.
Если сервер обрабатывает 1000 запросов одновременно, это, безусловно, повлияет на производительность.Даже если объект синхронизации занимает 100 байтов, но выделение / перераспределение, использование процессора gc повлияет на 1000 одновременных операций.
Несмотря на то, что существуют хорошо разработанные алгоритмы управления памятью, если ваш сервер будет работать непрерывно в течение длительного времени, это, безусловно, вызовет фрагментацию и замедлится.