我了解到线程之间进行通信的一种方法是共享一些原子数据结构。例如:
struct Point {
int const x, y;
};
std::atomic<Point> some_point_in_shared_memory{Point{0, 0}};
尽管已被删除,但调用赋值运算符Point::operator=(Point const &)
似乎没有问题std::atomic<Point>
,如下所示:
some_point_in_shared_memory = Point{1, 2};
这个操作如何实现?
我可能会考虑的一种解决方案是placement new
在旧对象之上构造一个新对象,但显然它不是异常安全的。还是因为Point
可以轻松复制而可以?