本帖最后由 wangchao1686 于 2013-12-10 23:18 编辑
原子操作时系统级别的安全性,正如你理解的一样。所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)。
如果只有一条语句操作共享数据是没有必要使用同步的。也就没有必要使用锁。我的理解是,锁是锁住了个原子操作。因为可能对共享数据的操作有多条(多个原子操作)。当多个线程同时执行这些操作共享数据的代码是,很有可能造成数据失去安全性。因为某个线程可能执行完某个原子操作就停止了,却没有吧多个原子操作执行完。
当加入了同步机制,把多个原子操作封装在一起锁起来,一个线程取得锁后,执行完锁住的所有的原子操作后,才会释放锁。即使这个线程暂时释放了cpu执行权,但是没有释放锁,其他程序也不能访问这些原子操作。从而保证了共享数据的安全性。老毕视频中关于设置和获取姓名的例子就很好的说明了这一点,建议你看看。
|