在多线程中原子代码和关键代码有什么区别?据我了解,这两个代码块都是一次必须由一个线程执行的代码块,但我不理解“关键”和“原子”含义的深度。
感谢您的帮助。
答案 0 :(得分:1)
没有区别。关键的代码部分执行原子的操作。
我不知道这两个名字的历史。我认为“关键部分”可能来自操作系统设计,在某些情况下,在执行某些代码部分期间禁用中断有时很重要。但是我强烈喜欢说“原子的”,因为无论如何对我来说,似乎更明显的是,我描述的是由一个线程完成的操作的顺序,必须使它们看起来像发生在一个线程中一样。被其他线程看到的单个瞬间。
我们不要忘记,“操作”是指对数据的操作。代码是只读的。代码永远不需要保护。总是需要保护的数据。如果您认为对数据集合进行的某些操作必须是原子操作,则应询问是否对相同数据进行的其他操作也可能需要原子操作。