标签: c++ multithreading c++11 thread-safety
我可以在一个线程中锁定std :: mutex并在其他线程中解锁吗?这是没有任何具体工程背景的理论问题。我只是好奇。
答案 0 :(得分:7)
C ++标准,[thread.mutex.requirements.mutex] / 21和22:
表达式m.unlock()应格式正确,并具有以下语义: 需要:调用线程应拥有互斥锁。
表达式m.unlock()应格式正确,并具有以下语义:
m.unlock()
需要:调用线程应拥有互斥锁。
违反 Requires 子句中的要求会导致未定义的行为。
答案 1 :(得分:6)
cppreference reads:
互斥锁必须由当前执行线程锁定,否则行为未定义。