Доступ к файлам, которые в данный момент пишутся - PullRequest
0 голосов
/ 01 февраля 2011

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

В частности, я спрашиваю о видеофайлах, например, если я начинаю процесс записи (с помощью Windows Media Encoder), и в это время я хотел бы отслеживать файл, если это пустой файл (черныйпикселей везде) или записывается реальный контент.

Извините, если мой вопрос новичок, но мне действительно нужно быть уверенным в этом.

Лучше всего заранее

1 Ответ

1 голос
/ 01 февраля 2011

В общем, вы, безусловно, можете читать файлы по мере их записи, не портя их содержимое. Тем не менее:

  1. Возможно . Возможно возникновение проблемы, если ваш носитель записи не может справиться с комбинированной скоростью передачи данных или как с чтением, так и с записью. Это может быть проблемой, особенно с медленными USB-накопителями.

  2. также может столкнуться с проблемой на жестких дисках, если комбинация чтения и записи превышает частоту случайных поисков, с которыми может справиться жесткий диск. Это может случиться легче на старых дисках (например, IDE) при работе с HD-видео.

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

Современные системы имеют довольно быстрые дисковые подсистемы, достаточно хорошие планировщики ввода-вывода и достаточно большие объемы ОЗУ, чтобы обеспечить обширное кэширование данных, что делает весьма маловероятным, что одна комбинация записывающее / считывающее устройство насыщало бы дисковую подсистему, если только вы делать что-то необычное, например, записывать несколько видеопотоков одновременно.

Имейте в виду, однако, что:

  1. Дисковая подсистема также может быть насыщена несвязанными процессами чтения / записи других файлов с того же диска.

  2. Если вы кодируете видео, вы также можете потерять кадры, если что-то потребляет достаточно ресурсов ЦП, чтобы процесс кодирования больше не мог соответствовать требованиям реального времени. В зависимости от видеофайла для тестового воспроизведения этого может быть достаточно - по крайней мере, воспроизведение HD может быть достаточно сложным. Итак, следите за загрузкой вашего процессора и экспериментируйте , прежде чем полагаться на него, чтобы записать ваше любимое шоу: -)

EDIT:

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

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

...