不断地阅读文档让我对boost::atomic
接口是否应该支持非平凡类型感到困惑?std::atomic
atomic
也就是说,给定一个(值)类型,只能通过将读/写封闭在一个完整的互斥锁中来进行写/读,因为它有一个非平凡的复制-ctor/赋值运算符,这应该由std::atomic
(正如 boost 明确指出它是 UB)。
我是否应该为非平凡的类型提供文档谈论自己的专业化?
boost::function<bool (void)> simpleFn;
注意:我之所以这样做,是因为我有一个需要自动设置/重置的跨线程回调对象。拥有一个单独的互斥体/临界区,甚至用简单的 set 将两者都包装在类似原子的辅助类型中,看起来很容易,但是有什么开箱即用的吗?