c++ - 移动 std::mutex 的构造函数

标签 c++ c++11

c++ 标准库中的许多类现在都有移动构造函数,例如 -

thread::thread(thread&& t)

但似乎 std::mutex 没有。我知道它们不能被复制,但是例如能够从“make_mutex”函数返回一个似乎是有意义的。 (不是说有用,只是觉得有意义)

std::mutex 没有移动构造函数有什么原因吗?

最佳答案

嗯...主要是因为我认为他们不应该移动。字面上地。

在某些操作系统中,互斥锁可能被建模为句柄(因此您可以复制它们),但 IIRC 的 pthreads 互斥锁是就地操作的。如果你要重新定位它,任何线程安全都会飞出窗口(其他线程怎么知道互斥锁刚刚改变了它的内存地址......)?

关于c++ - 移动 std::mutex 的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557179/

相关文章:

c++ - 无法在 Boost.Log 中设置控制台日志的格式

c++ - 为什么SADWinowSize_slider 的trackbar 的值在分配给sbm->state.SADWindowSize 时变为0,在我的代码中

c++11 - 为什么 std::hash 不是重载函数?

c++ - 在 C++ Trie 数据结构方面需要一些帮助

c++ - 如何从 C 代码调用具有可变数量参数的 C++ 函数

c++ - 将参数传递给线程函数(模板化)

c++ - 为什么我必须调用 operator<< 作为 SFINAE 使用 void_t 的方法?

c++ - 使用 {a,b,c} 作为参数的构造函数或 {a,b,c} 实际上在做什么?

c++ - org-mode 导出 html 时无法高亮 C++ 源代码

c++ - 我需要帮助在 C++ 中尽可能压缩此 IF 语句