Всем здравствуйте. Как реализовать доступ к одному файлу из нескольих потоков ? Достаточно ли будет просто мутексов или надо еще ставить блокировку на сам файл? Файл нужен только для чтения
Файл будет читаться через один дескриптор или через разные? IMHO второй вариант более предпочтителен и никакой синхронизации при его использовании вообше не нужно.
1. блокировки бесполезны ибо работают на уровне процесса. потокам будет пофиг на эти блокировки.
2. по идее мьютексов достаточно (на SMP можно использовать spin locks),
хотя если тока читать, может быть и синхронизация не потребуется... потестируйте :)
>блокировки бесполезны ибо работают на уровне процесса. потокам будет пофиг на эти блокировки.
не совсем так. если ты имееш один файловый дескриптор расшаренный на несколько потоков то ты прав а если для одного и тогоже файла каждый поток создаст собственный файловый дескриптор то блокировки должны работать. но мьютексы в любом случае лучше.
"... то блокировки должны работать..."
но, к сожалению, не работают... при попытке одновременной записи в файл из 2 нитей, файл портится. спасают тока мьютексы.