c++ 标准库中的许多类现在都有移动构造函数,例如 -
thread::thread(thread&& t)
但似乎 std::mutex 没有。我知道它们不能被复制,但是例如能够从“make_mutex”函数返回一个似乎是有意义的。 (不是说有用,只是觉得有意义)
std::mutex 没有移动构造函数有什么原因吗?
最佳答案
嗯...主要是因为我认为他们不应该移动。字面上地。
在某些操作系统中,互斥锁可能被建模为句柄(因此您可以复制它们),但 IIRC 的 pthreads 互斥锁是就地操作的。如果你要重新定位它,任何线程安全都会飞出窗口(其他线程怎么知道互斥锁刚刚改变了它的内存地址......)?
关于c++ - 移动 std::mutex 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557179/