如何在C ++中处理可移动类型中的互斥锁?

通过设计,std::mutex既不能移动,也不能复制。这意味着A持有互斥量的类将不会收到default-move-constructor。


如何使这种类型A以线程安全的方式移动?


MMMHUHU
浏览 510回答 3
3回答

慕尼黑5688855

鉴于似乎没有一个很好的,干净的,简单的方法来回答这个问题-我认为安东的解决方案是正确的,但肯定值得商,,除非出现更好的答案,否则我建议将此类放在堆上并照看它通过std::unique_ptr:auto a = std::make_unique<A>();它现在是完全可移动的类型,并且在发生移动时在内部互斥锁上处于锁定状态的任何人仍然是安全的,即使它是否是一件好事也存在争议如果您需要复制语义,请使用auto a2 = std::make_shared<A>();
打开App,查看更多内容
随时随地看视频慕课网APP