Dan*_*iel 4 c++ multithreading mutex c++11 visual-studio-2012
我想将我的代码从boost-移动到std-threads.虽然我认为它应该是非常直接的,但我遇到了奇怪的问题.下面的代码是一个最小的示例,它使用VS2012触发断言"f:\ dd\vctools\crt_bld\self_x86\crt\src\thr\mutex.c(131):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();
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么这不起作用?
谢谢
bam*_*s53 11
m.unlock()
要求调用线程拥有互斥锁.您的代码不符合该要求(因为unlock()
ing线程从不调用m.lock()
),因此程序的行为未定义.
归档时间: |
|
查看次数: |
2990 次 |
最近记录: |