Чтение нескольких потоков из одного файла - PullRequest
10 голосов
/ 05 мая 2009

Моя платформа - Windows Vista 32, с Visual C ++ Express 2008.

например:

если у меня есть файл, содержащий 4000 байтов, могу ли я прочитать 4 потока из файла одновременно? и каждый поток обращается к отдельному разделу файла.

нить 1 - 0-999, нить 2 - 1000 - 2999 и т. Д.

приведите пример на языке С.

Ответы [ 13 ]

0 голосов
/ 05 мая 2009

Вам не нужно делать что-то особенно умное, если все, что они делают, это чтение. Очевидно, что вы можете читать его столько раз параллельно, сколько захотите, если только вы его не блокируете. Письмо, конечно, другое дело ...

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

0 голосов
/ 05 мая 2009

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

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

0 голосов
/ 05 мая 2009

Вам нужен способ синхронизации этих потоков. Есть разные решения для мьютекса http://en.wikipedia.org/wiki/Mutual_exclusion

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