0

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

4

0 回答 0