我试图让“原子与非原子”的概念在我脑海中浮现。我的第一个问题是我找不到“现实生活中的类比”。就像客户/餐厅关系通过原子操作或类似的东西。
另外我想了解原子操作如何将自己置于线程安全编程中。
在这篇博文中;http://preshing.com/20130618/atomic-vs-non-atomic-operations/ 它被称为:
一个作用于共享内存的操作是原子的,如果它相对于其他线程在一个步骤中完成。当对共享变量执行原子存储时,没有其他线程可以观察到修改 half-complete。当对共享变量执行原子加载时,它会读取在某个时刻出现的整个值。非原子加载和存储不做这些保证。
“没有其他线程可以观察到修改半完成”是什么意思?
这意味着线程将等到原子操作完成?该线程如何知道该操作是原子的?例如,在 .NET 中,我可以理解如果您锁定对象,则设置标志以阻止其他线程。但是原子呢?其他线程如何知道原子操作和非原子操作之间的区别?
此外,如果上述陈述为真,那么所有原子操作都是线程安全的吗?