我在多个进程之间有一个共享内存,它以某种方式对内存进行交互。前任:
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
我如何为随机内存位置实现这一点(解释为 DataBlock 计数器 >above)。我可以保证地址按照架构的要求对齐(x86 linux)
- 使更新原子化 - 如何?(即 atomicupdate(addr, newvalue))
- 多核的内存同步 - (即 memorysync(addr)) - 我能看到的唯一方法是使用 std::atomic_thread_fence(std::memory_order_release) - 但这将“建立所有原子和宽松原子存储的内存同步排序” - 就是这样对我来说有点矫枉过正——我只想同步计数器位置。欣赏任何想法。