У меня возникают проблемы с кодом, который время от времени выдает следующее исключение:
boost interprocess: no such file or directory
Есть несколько кодов, обращающихся к одному и тому же набору файлов, но некоторые коды будут перемещать файлы в разные каталоги в режиме реального времени. Коды, обрабатывающие и перемещающие файлы, используют блокировки файлов, например.
boost::interprocess::file_lock
Процесс, происходящий в коде, выглядит следующим образом: 1) Программа 1 проверяет, существует ли файл, который она хочет заблокировать 2) Если вышеуказанная проверка проходит успешно, она затем блокирует файл, используя file_lock
Я думаю, проблема в том, что между шагами 1 и 2 программа 2 может использовать boost::filesystem::rename для файла, над которым работает программа 1, и переместить его.
Если обе программы работают одновременно, есть ли способ предотвратить это?