2 xzqy8181 xzqy8181 于 2014.08.18 00:25 提问

关于CPU分配任务时的一些问题

我们都知道 CPU里是有时序的 任何一个程序说白了扔到CPU里时都是按照一个序列进行操作
例:
写X=0
读取X
写X=1
读取X

那现在如果出现了多核的CPU就可能出现这么个问题
假设这个多核CPU是双核 也就是A1 和A2 2个核
那么 假设每步CPU操作都需要1秒的时间 开始时间是0
A1 A2
第0秒 写X=0 不操作
第1秒 写X=1 读X 将X的值放入Y1
第2秒 写X=2 读X 将X的值放入Y2

我想问的是
最后 Y1 和Y2的值是多少?

PS:
其实问题就是
在单核CPU时 每步的操作是可以看成一个确定的前后顺序的队列的
但在多核CPU时 可能就不是一个确定的前后顺序的队列了

那么在多核CPU时就可能是一个不稳定 不确定的队列 那么在这种情况下(假设多核的确是不确定的队列) 在第2秒的时候 A2读取X时 A1的操作是不是先锁定X的值 当修改成X=2后 才解锁? 还是A1会直接修改 而不锁定?

说白了 多核CPU分配数据时 是否会自动的锁数据?如果不锁数据 那么当A1修改X=2时 修改的这步操作肯定是需要时间的 如果在A1修改时A2来读数据了 会怎么样?

Csdn user default icon
上传中...
上传图片
插入图片