Разрешены ли параллельные вызовы send / recv в одном и том же сокете?



0 Answers

Дескриптор сокета относится к процессу, а не к определенному потоку. Следовательно, можно отправлять / получать в / из одного и того же сокета в разных потоках, ОС будет обрабатывать синхронизацию.

Однако, если порядок отправки / получения семантически значим, вы сами (соответственно ваш код) должны обеспечить правильное упорядочение между операциями в разных потоках - как это всегда происходит с потоками.

Question
  1. Можем ли мы называть send из одного потока и recv из другого в тот же сокет?
  2. Можно ли вызывать несколько отправлений параллельно из разных потоков в одном и том же сокете?

Я знаю, что хороший дизайн должен избегать этого, но я не понимаю, как будут работать эти системные API. Я тоже не могу найти хорошую документацию.

Любые указатели в направлении будут полезны.




Related