有人可以向我解释一下,原子操作和原子事务有什么区别?在我看来这两个是一回事。这是正确的吗?
最佳答案
原子性的概念在原子事务和原子操作之间是通用的,但它们通常与不同的域相关。
原子事务与数据库操作相关联,其中一组操作必须全部完成,否则没有一个完成。例如,如果有人预订航类,您希望既获得付款又预订座位,或者两者都不做。如果允许其中一个成功而另一个也成功,则数据库将不一致。
另一方面,原子操作通常与关于多处理或多线程应用程序的低级编程相关联,并且类似于临界区。
例如,如果两个线程都访问和修改同一个变量,每个线程都会经历以下步骤:
但是在多线程系统中,在第一个进程读取该值但尚未将其写回后,可能会发生中断或其他上下文切换。然后第二个进程(或中断)将读取和修改 OLD 值并将其修改后的值写回存储。当第一个进程重新启用时,它不知道某些东西可能已经更改,因此它将更改写回原始值。因此,第二个进程对变量所做的操作将丢失。
如果操作是 原子 ,一旦开始就保证完成而不会中断。这通常是使用硬件级原语(如测试和设置或比较和交换)来完成的。
关于atomicity - 原子操作和原子事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15658828/