Windows上的std :: mutex :: lock失败,错误代码3

时间:2015-06-09 19:28:07

标签: c++ windows multithreading c++11 mutex

我在整个应用程序中以正确的RAII方式使用std::mutexstd::lock_guard

struct Foo {
    int f() const
    {
       std::lock_guard<std::mutex> locker(m_mutex);
       return m_i;
    }
private:
   int m_i = 0;
   mutable std::mutex m_mutex;
};

它始终有效,但我刚刚在另一个类中添加了并行性,并且在这个新类locker中抛出了std::system_error。问题出在这里(xthread标题):

inline int _Mtx_lockX(_Mtx_t *_Mtx)
{   // throw exception on failure
    return (_Check_C_return(_Mtx_lock(_Mtx)));
}

_Mtx_lock返回3而预期值为0.不知道3意味着什么。

VS2013,v120_x64运行时。

1 个答案:

答案 0 :(得分:7)

@Phantom(_Thrd_busy)提到的错误意味着已经递归地获取了锁。另请参阅此answer