многопоточность для io-связанных приложений: хорошо или плохо - PullRequest
1 голос
/ 26 октября 2011

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

Возьмите этот пример.

Почему многопоточность с io-bound плоха

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

Где, как в этом примере, ответ с наибольшим количеством голосов говорит о том, что он может улучшить пропускную способность.

Почему многопоточность с io-bound хороша

Я что-то здесь неправильно понимаю?

В моей ситуации мне нужно читать с n дисковых позиций n раз в секунду. Мне трудно решить, следует ли мне вообще использовать потоки.

Например, если у меня было 20 файлов на диске и 20 отдельных потоков, считывающих с диска в состоянии ожидания и пробуждения, это полностью замедлит мою систему? Если pthread выполняет код, который читает с диска, будут ли заблокированы все остальные 19 потоков, выполняющих одно и то же для другого файла?

Ответы [ 3 ]

1 голос
/ 26 октября 2011

Зачем вам для этого многопоточность?Если вы работаете с одним диском, многопоточность обеспечит такую ​​же производительность в лучшем случае или немного медленнее.

1 голос
/ 26 октября 2011

В этом вопросе:

Имеет ли смысл порождать более одного потока на процессор?

То, что вы отметили «почему многопоточность с io-bound хороша», в верхнем ответе 16 голосов, и он заявляет, что «если ваше программное обеспечение часто использует дисковый или сетевой ввод-вывод». Обратите особое внимание на последнюю часть, «сетевой ввод-вывод». Это отличительный фактор от вашего первого связанного вопроса, который касается только потоков и дискового ввода-вывода.

0 голосов
/ 26 октября 2011

Единственный способ, которым дополнительные потоки помогут в ситуации с io-ограничением, - это если ваша система хранения может обрабатывать несколько запросов параллельно. Это может иметь место в массивах хранения данных верхнего уровня, но вряд ли это относится к потребительским устройствам, таким как ipad.

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