我在多个进程之间有一个共享内存,该内存以某种方式与内存交织在一起。
前任:
DataBlock {
int counter;
double value1;
double ... }
我想要的是原子地更新/增加计数器。并在该地址上进行内存释放。
例如,如果我不使用共享内存,它将类似于
std::atomic<int> counter;
atomic_store(counter, newvalue, std::memory_order_release); // perform release operation on the affected memory location making the write visible to other threads
最佳答案
我无法在这里授权回答,但我可以提供可能有用的相关信息。
简短的答案是,没有符合标准的方法可以做到这一点。但是,依靠标准定义多线程的方式,您可以对质量编译器做出很多假设。
最大的问题是是否可以简单地将原子分配到共享内存中(新放置)并工作。显然,这只有在它是真正的硬件原子的情况下才有效。但是我的猜测是,使用优质的编译器/库,C++原子应该可以在共享内存中找到。
玩得开心,验证行为。 :)
关于c++ - 原子访问共享内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8759429/