如果我使用 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。