MESI问题
有一个变量a=0;有两个线程同时在多核环境下去执行a++去更改这个变量。 按照缓存一致性是不是应该是这样一个过程:两个cpu都把a读到缓存,此时a是一个S的状态,现在两个cpu都要去修改a,但是只能有一个cpu(假设是cpu1)把a修改为M状态,另一个会变为I(失效状态),当cpu2再要去执行a++的时候,会去主存读取a(因为缓存中的a已经是失效状态),这就会先触发cpu1缓存中的M状态的a(此时a=1)写回主存,然后cpu2才会读取到主存中a=1到缓存,这时两个cpu缓存中的a都变成S状态,然后cpu2再去做修改。---------过程如果是这样的话,最后输出的a一定是2了(测试结果并不是-。-)。