我正在尝试在有关发布安全的部分中关注这篇文章。我的情况与文章中的简单示例没有什么不同,但“发布”的数据不是单个值,而是一个struct
. 发布者将单独编写每个字段,因此通过将每个写入与存储一起包装memory_order_release
我应该没问题。
消费者将首先检查memory_order_acquire
数据是否准备就绪。然后,我很想使用 amemcpy
将整个发布的内容复制struct
到其他地方(因为它更适合其他预先存在的代码),但这似乎不安全,因为我无法指定内存模型。这只是偏执狂还是会是一个严重的问题?
接受特定于 amd64/x86 的建议。