玉祥集团官方热线



電_

















Q;

_











【专业信誉】【安全可靠】
在单核 CPU 场景下,同一时刻只有一个线程执行,禁

止 CPU 中断,意味着操作系统不会重新调度线程,即

禁止了线程切换,获得 CPU 使用权的线程就可以不间

断地执行。所以两次写操作一定是:要么都被执行,

要么都没有被执行,具有原子性。
但是在多核场景下,同一时刻,可能有两个线程同时

在执行,一个线程执行在 CPU-1 上,一个线程执行在

CPU-2 上。此时禁止 CPU 中断,只能保证 CPU 上的

线程连续执行,并不能保证同一时刻只有一个线程执

行。如果这两个线程同时向内存写 long 型变量高 32

位的话,那么就会造成我们写入的变量和我们读出来

的是不一致的。

所以解决原子性问题的重要条件还是为:同一时刻只

能有一个线程对共享变量进行操作,即互斥。如果我

们能够保证对共享变量的修改是互斥的,那么,无论

是单核 CPU 还是多核 CPU,就都能保证原子性。

下面将介绍实现互斥访问的方案,加锁机制。

猜你喜欢

转载自www.cnblogs.com/fadsa124656542/p/12220205.html