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

std::mutex::lock fails on Windows, error code 3

本文关键字:错误 失败 误码 Windows mutex lock std      更新时间:2023-10-16

我在整个应用程序中以适当的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 runtime.

@Phantom (_Thrd_busy)提到的错误意味着锁被递归地占用了。还可以查看这个答案

相关文章: