如 何 制 作 连 发 气 排

如 何 制 作 连 发 气 排




Q

Q
1
3
7
5


1
0
7
6

在单核 CPU 场景下,同一时刻只有一个线程执行,禁止 CPU 中断,意味着操作系统不会重新调度线程,即禁止了线程切换,获得 CPU 使用权的线程就可以不间断地执行。所以两次写操作一定是:要么都被执行,要么都没有被执行,具有原子性。
但是在多核场景下,同一时刻,可能有两个线程同时在执行,一个线程执行在 CPU-1 上,一个线程执行在 CPU-2 上。此时禁止 CPU 中断,只能保证 CPU 上的线程连续执行,并不能保证同一时刻只有一个线程执行。如果这两个线程同时向内存写 long 型变量高 32 位的话,那么就会造成我们写入的变量和我们读出来的是不一致的。

所以解决原子性问题的重要条件还是为:同一时刻只能有一个线程对共享变量进行操作,即互斥。如果我们能够保证对共享变量的修改是互斥的,那么,无论是单核 CPU 还是多核 CPU,就都能保证原子性。

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

猜你喜欢

转载自www.cnblogs.com/sdgsd651232/p/12219935.html
今日推荐