Есть много причин.
Во-первых, операции чтения и записи в любом случае не делают никакого тяжелого подъема. Операция чтения только собирает данные, которые уже были обработаны, и операция записи просто отправляет данные, которые должны быть записаны, насколько это возможно. Таким образом, для дополнительной сложности нет большой производительности.
Во-вторых, типичный календ сервера или клиента чередует отправку и получение в любом случае. С потоком отправки и потоком приема эта каденция требует передачи данных из одного потока в другой, который имеет тенденцию быть неэффективным. Вы также нуждаетесь в очередях для адаптации между потоками и противодавлением для обработки заполнения очереди. Если вы продолжаете читать, когда пишете, куда вы помещаете эти данные? Вы просто сохраняете его в памяти?
В-третьих, больше потоков означает больше потребления ресурсов и больше контекстных переключателей. Чтобы справиться с типичным циклом отправки-обработки-отправки, вам понадобится хотя бы один дополнительный контекстный переключатель. И если вы обрабатываете много соединений, это означает, что у вас больше потоков, и это облегчает для одного соединения получение большей доли ресурсов.
Наконец, если вы используете протокол TLS, ваша логика отправки и получения будет иметь взаимозависимости. Так что ваши потоки просто будут ждать друг друга в любом случае.
В большинстве сетевых ситуаций между данными, считываемыми и записанными, есть некоторые * отношения *. То есть данные для записи зависят от того, что только что было прочитано. Нет никакой пользы для использования нескольких потоков, если они неоднократно должны встречаться для обмена информацией. –
Почему вы ожидаете использовать два потока для повышения производительности? Я бы подумал, что это ухудшит работу, поскольку обычно вы не получите некоторые данные, а затем отправляете некоторые данные без контекстного переключателя, а контекстные переключатели имеют ненулевую стоимость. –
@Damien_The_Unbeliever, потому что я думаю, что запись повлияет на следующее время чтения. – jiafu