我想将我的代码从 boost-threads 移动到 std-threads。虽然我认为这应该很简单,但我遇到了奇怪的问题。下面的代码是一个使用 VS2012 触发断言“f:\dd\vctools\crt_bld\self_x86\crt\src\thr\mutex.c(131):unlock of unowned mutex”的最小示例。搜索这个会显示较旧的错误报告(我认为)应该已经修复。
int result = 0;
std::mutex m;
m.lock();
std::thread t1([&](){
result = 42;
m.unlock();
});
m.lock();
std::cout << result << std::endl;
t1.join();
有人可以向我解释为什么这不起作用吗?
谢谢