tôi sử dụng std::mutex
và std::lock_guard
một cách đúng đắn RAII suốt ứng dụng của tôi:std :: mutex :: khóa bị lỗi trên Windows, mã lỗi 3
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;
};
Nó luôn luôn làm việc, nhưng tôi đã thêm song song với một nhiều lớp học hơn, và trong lớp học mới này locker
ném std::system_error
. Vấn đề là ở đây (xthread
tiêu đề):
inline int _Mtx_lockX(_Mtx_t *_Mtx)
{ // throw exception on failure
return (_Check_C_return(_Mtx_lock(_Mtx)));
}
_Mtx_lock
lợi nhuận 3 trong khi giá trị dự kiến là 0. Không có ý tưởng gì 3 phương tiện.
VS2013, v120_x64 runtime.
bài viết mã mà instantiates mutex. –
@WernerErasmus: mở rộng câu hỏi. –
Cung cấp cho chúng tôi đủ mã để tái tạo sự cố. Hoặc kiểm tra ngăn xếp cuộc gọi khi xảy ra lỗi và có thể hiển nhiên. –