在单线程程序中,如果线程在核1中进行更改,如何使核2看到更改后的值,以便在上下文切换后,线程(现在在核2上运行)将具有更新的值?
考虑以下示例:
1.变量x在主存储器中的值为10。 2.线程在核1上运行,并将x更改为5,它仍然在缓存中,尚未刷新到主存储器,因为我们没有使用任何内存屏障。 3.发生上下文切换,线程从核1移动到核2。 4.线程读取x的值。
如果线程在上下文切换后在核2中恢复执行,x的值将是多少?
如果“缓存一致性”管理一致性以处理上述情况,那么为什么在多线程程序中需要显式锁定(或任何读/写屏障)?
考虑以下示例:
1.变量x在主存储器中的值为10。 2.线程在核1上运行,并将x更改为5,它仍然在缓存中,尚未刷新到主存储器,因为我们没有使用任何内存屏障。 3.发生上下文切换,线程从核1移动到核2。 4.线程读取x的值。
如果线程在上下文切换后在核2中恢复执行,x的值将是多少?
如果“缓存一致性”管理一致性以处理上述情况,那么为什么在多线程程序中需要显式锁定(或任何读/写屏障)?