首页 > 解决方案 > 多线程中的原子代码和关键代码有什么区别?

问题描述

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

谢谢您的帮助。

标签: synchronization

解决方案


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

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

我们不要忘记“操作”意味着对数据的操作。代码是只读的。代码永远不需要保护。需要保护的始终是数据。如果您认为对数据集合的某些操作需要是原子的,那么您应该询问对同一数据的其他操作是否也需要是原子的。


推荐阅读