コードをブースト スレッドから標準スレッドに移動したいと考えています。私はそれが非常に簡単であるべきだと思っていましたが、私は奇妙な問題に遭遇しています。以下のコードは、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();
なぜこれが機能しないのか、誰かが私に説明できますか?
ありがとう