<!--- 请清晰详细地描述你遇到的问题,描述问题时请给出芯片/BSP/工具链,RT-Thread版本,复现步骤及现象或者有条理地描述你的问题。在问题得到解决后,请及时关闭issue。欢迎到论坛提问:https://club.rt-thread.org/ --> <!--- Please describe your problem clearly and in detail. When describing the problem, please use numbers or bullet points to describe your problem coherently. After the problem is resolved, please close the issue in time. Welcome to the forum to ask questions: https://club.rt-thread.io/ --> 出发点是看到了在[这个PR](https://github.com/RT-Thread/rt-thread/pull/8042#discussion_r1365147424)中的讨论,其中提到的 `int32 数据赋值在对齐时本来就是原子的` 与我印象中不符,于是查阅了一些资料与各位开发者分享,也希望听听大家的意见。 简单总结一下就是,C/C++中的“赋值”操作并不是原子的,不论从编译器实现上还是语言标准规定上皆是如此,而且变量的地址对齐与否并不影响该结论。 具体可以参考[这篇文章](https://preshing.com/20130618/atomic-vs-non-atomic-operations/) 其中详细解释了引起非原子性的原因。 针对rt-thread中大量存在(maybe)的“直接赋值当成原子操作”的行为,是否有必要集中做一次修改?
出发点是看到了在这个PR中的讨论,其中提到的
int32 数据赋值在对齐时本来就是原子的与我印象中不符,于是查阅了一些资料与各位开发者分享,也希望听听大家的意见。简单总结一下就是,C/C++中的“赋值”操作并不是原子的,不论从编译器实现上还是语言标准规定上皆是如此,而且变量的地址对齐与否并不影响该结论。
具体可以参考这篇文章 其中详细解释了引起非原子性的原因。
针对rt-thread中大量存在(maybe)的“直接赋值当成原子操作”的行为,是否有必要集中做一次修改?