价格面议2020-11-05 15:14:25
• 我们知道计算机内部含有内存和CPU,那么在进行计算的时候,内存读写还是太慢了,因此在内存和CPU之间还是有一个缓存cache,拉勾IT开发小编为大家分解
• 那么我们知道如果是一个共享变量的话,就会导致,内存中变量和缓存中的变量由于多线程同步不及时,也就是说,一个线程中的缓存还没来的急写入内存,此时有可能在内存中的变量被其他线程读取了。
• 解决这个问题可以:1)通过在总线加LOCK#锁的方式;2)通过缓存一致性协议
• 第一种方式效率低下,很难实现多线程;第二种方式有一个著名MSI协议,就是指当缓存写入内存之后,会向其他线程发出信号,共享变量数值已变,如果需要的话,需要重新更新。
2.并发编程的三个概念
• 原子性:一组操作要么全部执行成功,要么全部执行失败,不存在部分成功,部分失败的情况
• 可见性:一个线程对共享变量在缓存中已经更改,但是还没有来得及写入内存,此时又有一个线程访问了该变量,那么就会出现数据不一致
•