Poco Mutex在关闭程序后导致未处理的异常

时间:2012-12-15 15:09:02

标签: c++ mutex poco-libraries

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

0 个答案:

没有答案
相关问题