多线程中的原子代码和关键代码有什么区别?

What is the difference between atomic code and critical code in multi threading?

多线程中原子代码和关键代码有什么区别?据我了解,两者都应该是一次必须由一个线程执行的代码块,但我不明白含义的深度 "critical" & "atomic".

感谢您的帮助。

没有区别。代码的关键部分 执行原子操作

我不知道这两个名字的来历。我认为 "critical section" 可能来自操作系统设计,在某些代码段的执行过程中禁用中断有时很重要;但我更喜欢说 "atomic" 因为,无论如何对我来说,似乎更明显的是我正在描述一个 sequence 必须由一个线程完成的操作如果它们在其他线程看到时发生在一个瞬间。

我们不要忘记"operation" 表示对数据 的操作。代码是 read-only。代码永远不需要保护。始终是需要保护的数据。如果您认为对一组数据的某些操作需要是原子的,那么您应该问问对同一数据的其他操作是否也可能需要是原子的。