Если у меня есть массив из N сокетов, и мне нужно отправить (..) данные в каждый из сокетов с максимально возможной скоростью, какое число потоков будет оптимальным для этого?ОС - это linux.
Например, если у меня есть физические ядра C, должны ли быть потоки C, каждый из которых выполняет send (..)?Будет ли это эффективно?Другими словами, мой вопрос, как syscall send (..) обрабатывается ядром linux и как данные, поступающие на него, будут запланированы в ядре.Я помню, как читал документацию по сокетам BSD, что на самом деле все системные вызовы send (..) для сокетов помещают данные в очередь, обрабатываемую одним потоком, поэтому код:
thread1 -> send(sock1, ..)
..
threadN -> send(sockN, ..)
будет более или менееэквивалент (минус время обработки данных отправкой перед отправкой в ядро) по производительности сети с кодом
thread -> send(sock1, ..), ..., send(sockN, ..)
Но это было из книги середины 1990 года, я думаю, что современные ОС должны измениться после этого времени.