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

时间:2019-07-18 09:54:22

标签: synchronization

在多线程中原子代码和关键代码有什么区别?据我了解,这两个代码块都是一次必须由一个线程执行的代码块,但我不理解“关键”和“原子”含义的深度。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

我不知道这两个名字的历史。我认为“关键部分”可能来自操作系统设计,在某些情况下,在执行某些代码部分期间禁用中断有时很重要。但是我强烈喜欢说“原子的”,因为无论如何对我来说,似乎更明显的是,我描述的是由一个线程完成的操作的顺序,必须使它们看起来像发生在一个线程中一样。被其他线程看到的单个瞬间。

我们不要忘记,“操作”是指对数据的操作。代码是只读的。代码永远不需要保护。总是需要保护的数据。如果您认为对数据集合进行的某些操作必须是原子操作,则应询问是否对相同数据进行的其他操作也可能需要原子操作。