Я использую boost::interprocess::named_upgradable_mutex
для синхронизации нескольких процессов.interprocess :: named_upgradable_mutex - остается заблокированным, если процесс убит
Я использую boost::interprocess::sharable_lock
и boost::interprocess::scoped_lock
для блокировки мьютекса.
При тестировании синхронизации он выглядит нормально, пока процессы работают и нормально закрываются.
Но, я заметил, что если процесс убит (например, с помощью TaskManager), удерживая мьютекс, мьютекс остается заблокированным.
Любая идея, как я могу обрабатывать сбои процесса?
Я думал об использовании timed_lock()
на всякий случай ... любые другие идеи?
В каких обстоятельствах может быть убит процесс, чтобы весь экземпляр программы был убит? – curiousguy
Возможный дубликат [boost interprocess с именем mutex остается приобретенным после сбоя] (http://stackoverflow.com/questions/7808431/boost-interprocess-named-mutex-remains-acquired-after-a-crash) –
@curiousguy - Например, TaskManager может убить процесс нечисто. –