在 github 的这个虚假共享测试中,一个数组被定义为int array[100]. 它说
bad_index = 1
good_index = 99。然后它创建两个线程并执行以下操作:
- 虚假共享:thread_1 更新
A[0],thread_2 更新A[bad_index] - 无虚假共享:thread_1 更新
A[0],thread_2 更新A[good_index]
使用虚假共享,操作速度会慢 2 倍以上。我的问题是为什么索引1不好而索引99好?
在 github 的这个虚假共享测试中,一个数组被定义为int array[100]. 它说
bad_index = 1
good_index = 99。然后它创建两个线程并执行以下操作:
A[0],thread_2 更新A[bad_index]A[0],thread_2 更新A[good_index]使用虚假共享,操作速度会慢 2 倍以上。我的问题是为什么索引1不好而索引99好?