Предположит, что у меня есть многопоточная программа, в которой каждый из 2 нитей:Справедливость сокета write() в двух параллельных соединениях?
- имеет свой собственный сокет
socket_fd
в умолчанию (блокирующий) режим - повторно передают данные с использованием
write(socket_fd, data, data_len)
таким образом, что сеть становится узким местом - размер данных, передаваемых на
write
(то естьdata_len
), всегда равен MSS; для простоты предположимdata_len = 500
Я задаюсь вопросом о справедливости записи предполагающих единую сетевую карту, то есть: если поток 2 звонки писать 9х реже, есть слабая гарантия того, что данные, передаваемые по теме 2 будет составлять примерно от общей суммы данных, отправленной в течение разумного срока (т.е. поток 2 в конечном итоге отправит свои данные, хотя нить 1 сохраняет основной носитель очень занятым, постоянно отправляя чрезмерное количество данных)?
Меня больше интересует случай, когда поток 1 (который отправляет больше данных) использует TCP, а в потоке 2 используется DCCP. Тем не менее, ответы на сценарии, в которых поток 2 использует UDP и TCP, также приветствуются.
Я думаю, вы можете использовать 'send()' (возможно, с 'flags'). –