У меня есть несколько процессов, но только один должен быть запущен одновременно. Это означает, что, скажем, Process1 запущен, и если Process2 запущен, то Process2 должен дождаться завершения Process1 . Я рассматриваю boost named_mutex для этого с кодом, как показано ниже.
#include <iostream>
#include <boost/interprocess/sync/named_mutex.hpp>
using namespace boost::interprocess;
int main()
{
named_mutex mutex(open_or_create, "some_name");
try
{
mutex.lock();
// Do work
mutex.unlock();
}
catch (const std::exception& ex)
{
mutex.unlock();
std::cout << ex.what();
}
}
Вопросы:
1. Я хотел бы убедиться, что не существует ситуации, когда Process2 лишается возможности получить блокировку, если Process1 встречает какое-либо обработанное / необработанное исключение?
2. Есть ли в c ++ механизм finally, похожий на c #, который может быть полезен в этом сценарии использования?