Как я могу найти проблемы параллелизма файловой системы? - PullRequest
0 голосов
/ 26 марта 2010

У меня есть приложение, работающее в Linux, и я обнаружил, что хочу Windows (!).

Проблема в том, что каждые 1000 раз я сталкиваюсь с проблемами параллелизма, которые согласуются с одновременным чтением / записью файлов. Я вполне уверен, что такое поведение было бы запрещено блокировкой файлов под Windows, но у меня нет достаточно быстрого окна для проверки.

Просто слишком много доступа к файлам (слишком много данных), чтобы ожидать надежной работы strace - большой объем вывода, вероятно, тоже изменит проблему. Это также происходит с разными файлами каждый раз. В идеале я хотел бы изменить / перенастроить файловую систему linux, чтобы она была более строгой (как в случае отказа) при одновременном доступе.

Есть ли какие-либо инструменты / настройки, которые я могу использовать для достижения этой цели?

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Хммм. Параллельный доступ к файлам совершенно законен в Posix-подобных системах, поэтому с ним не связано никакого режима «сбоя». Есть ли причина, по которой вы не можете использовать блокировку файлов в Linux? По вашему описанию трудно сказать, что является реальной проблемой (в 1000 раз больше?), Но похоже, что традиционные системные вызовы flock () или lockf () могут быть тем, что вы ищете.

1 голос
/ 26 марта 2010

Почему-то я думал, что вы используете C ++. Следующее применимо, если вы.

Если вы используете многопоточность и fstream IO и пользовательские потоковые буферы или отключили sync_with_stdio, то да, iostreams C ++ будут работать иначе, чем iostreams в Windows.

Я столкнулся с этим с одним из моих собственных проектов.

Windows определяет мьютекс в своем сторожевом устройстве iostream. Linux нет. Linux, похоже, имеет блокировку в своих функциях C stdio, так что обычно это работает в любом случае.

Однако я определил пользовательский отладочный потоковый поток, который не прошел через stdio и получил все виды искажений в Linux.

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

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