std::mutex错误"unlock of unowned mutex"
在Visual Studio 2012中,执行程序:
#include <mutex>
#include <thread>
// unlock of unowned mutex
int main()
{
std::mutex lock;
std::thread thread_a([&lock] { lock.lock(); });
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
lock.unlock();
thread_a.join();
return 0;
}
在Debug版本中,lock.unlock()这一行提示错误"unlock of unowned mutex"
微软说这问题已修复:
http://connect.microsoft.com/VisualStudio/feedback/details/688797
请各路大神指点一下,我应该如何使用std::mutex
C++11
[解决办法]
线程没你这么写的吧。
[解决办法]
mutex要求加锁解锁必须在同一线程吧?!
[解决办法]
std::mutex是采用CRITICAL_SECTION实现的,但在Debug版本中会分配一结构用于检测是否在同一线程解锁!!!
[解决办法]
mutex需要在同一线程中进行处理吧