std :: mutex的线程安全性

时间:2014-12-02 19:33:02

标签: c++ multithreading c++11 thread-safety

我可以在一个线程中锁定std :: mutex并在其他线程中解锁吗?这是没有任何具体工程背景的理论问题。我只是好奇。

2 个答案:

答案 0 :(得分:7)

C ++标准,[thread.mutex.requirements.mutex] / 21和22:

  

表达式m.unlock()应格式正确,并具有以下语义:

     

需要:调用线程应拥有互斥锁。

违反 Requires 子句中的要求会导致未定义的行为。

答案 1 :(得分:6)

cppreference reads:

  

互斥锁必须由当前执行线程锁定,否则行为未定义。