错误共享是多核系统上众所周知的性能问题之一,其中每个进程都有其本地缓存。当不同处理器上的线程修改驻留在同一缓存行上的变量时,会发生错误共享,如下图所示:
错误共享很难检测到,因为线程可能正在访问完全不同的全局变量,而这些变量恰好在内存中相对靠近。与许多并发问题一样,避免错误共享的主要方法是仔细检查代码并将数据结构与缓存行的大小保持一致。
错误共享是多核系统上众所周知的性能问题之一,其中每个进程都有其本地缓存。当不同处理器上的线程修改驻留在同一缓存行上的变量时,会发生错误共享,如下图所示:
错误共享很难检测到,因为线程可能正在访问完全不同的全局变量,而这些变量恰好在内存中相对靠近。与许多并发问题一样,避免错误共享的主要方法是仔细检查代码并将数据结构与缓存行的大小保持一致。