использовать мьютекс или нет для одновременной отправки файлов по TCP-сокетам - PullRequest
0 голосов
/ 08 мая 2018

Я разработал многопоточную систему, которая создает дочерний процесс для каждого клиентского запроса на чтение и отправку файлов клиентам через сокеты tcp.

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

Размеры файлов в среднем составляют 500 копеек, и мы оценили одновременные tcp-соединения на максимальных значениях 2000 в минуту.

PS: программа считывает каждый файл в чанках по 2000 байт, отправляет каждый буфер и цикл до завершения передачи

1 Ответ

0 голосов
/ 08 мая 2018

Я сталкиваюсь с такими проблемами, как: какие операции с какими ресурсами выполняются и кем?

Некоторые из выполняемых операций:

  • читает файлы (возможно, поделился?)
    • Гарантирует ли ОС (linux?), Что чтение файлов является потокобезопасным? Да это выглядит так . Если это действительно так (что-то, с чем я не очень хорошо знаком), то координация мьютекса по всему процессу для доступа к файлам будет ненужной накладной.
  • Запись в TCP для каждого процесса
    • Это не должно быть проблемой с параллелизмом, потому что каждый процесс обрабатывает свое собственное TCP-соединение

Если опубликованная ссылка отражает реальность, тогда не должно быть необходимости в межпроцессной координации (мьютексы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...