Сокеты небезопасны для потока на уровне потока.Вы должны обеспечить синхронизацию.Единственная гарантия заключается в том, что вы не получите копии одних и тех же байтов в разных вызовах чтения независимо от параллелизма.
Но на уровне Reader и, особенно, на уровне Writer, у вас могут возникнуть некоторые проблемы с блокировкой .
В любом случае, вы можете обрабатывать операции чтения и записи с потоками Socket, как если бы они были полностью независимыми объектами (они единственные, кого они разделяют, это их жизненный цикл).
Как только вы обеспечили правильную синхронизацию между потоками читателей, с одной стороны, и потоками писателей, с другой стороны, с любым числом читателей и писателей все будет в порядке.Это означает, что да, вы можете читать в одном потоке и писать в другом (на самом деле это очень часто), и вам не нужно останавливать чтение во время записи.
Последний совет: все операцииучаствующие потоки имеют связанный тайм-аут, убедитесь, что вы правильно обрабатываете тайм-ауты.