Я получаю необработанное исключение, если закрою свою программу, используя мьютексы Poco.
Я использую глобальный
Poco::Mutex mymutex ;
в моем файле cpp, потому что у меня есть статический класс для регистрации (я также пытался объявить его как статический член, но я получил ту же ошибку).
Соответствующая часть моего кода (это статическая функция):
void Log::log(std::string message)
{
try
{
Poco::Mutex::ScopedLock lock(mymutex);
std::ofstream f("log.txt", std::ios_base::app) ;
f << message << std::endl ;
f.close() ;
}
catch (...)
{
}
}
Эта часть кода прекрасно работает в моей программе (нет строк друг на друга, как до использования мьютексов), но после закрытия программы я получаю следующее сообщение об ошибке:
Unhandled exception at 0x77c3a710 in myprogram.exe: 0xC0000005:
Access violation writing location 0x00000014.
Я также пытался использовать mymutex.lock () и mymutex.unlock () до и после записи в файл, но я получил ту же ошибку.
И я также попробовал этот код:
while(!mymutex.tryLock())
Poco::Thread::sleep(30);
но это привело к бесконечному циклу, программа не остановилась после закрытия своего окна.
Я использую Visual Studio 2010 и Poco 1.4.
Задача ещё не решена.
Других решений пока нет …