前端之家收集整理的这篇文章主要介绍了
多线程 – 高速缓存一致性的要点是什么?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在像x86这样的
cpu上提供高速缓存一致性,从实践的角度来看,这是有用的吗?我明白,这个想法是使内核更新在一个核心上完成,在所有其他内核上可以立即
显示.这是一个有用的
属性.但是,如果不是在汇编语言中编写,那么不能太依赖它,因为编译器可以在寄存器中存储变量赋值,而不要将它们写入内存.这意味着还必须采取明确的步骤,以确保在其他线程中完成的
内容在当前线程中可见.因此,从实际的角度来看,什么是高速缓存一致性?
想像你这样做:
lock(); //some synchronization primitive e.g. a semaphore/mutex
globalint = somevalue;
unlock();
如果没有缓存一致性,那么最后一个unlock()将不得不保证globalint现在可以随处可见,所以您需要做的只是将其写入内存并让硬件做到这一点.一个软件解决方案将会保持哪些内存存在于哪个高速缓存中,哪个内核以某种方式确保它们是原子同步的.
如果您可以找到一个软件解决方案来跟踪需要保持同步的高速缓存中存在的所有内存,那么您将获得一项奖励,这比当前的硬件解决方案更有效率.
原文链接:https://www.f2er.com/java/125787.html