jma*_*erx 11 c c++ multithreading
假设我有一个int向量,我已经预先填充了100个元素,值为0.
然后我创建2个线程并告诉第一个线程用数字填充元素0到49,然后告诉线程2用数字填充元素50到99.可以这样做吗?否则,实现这一目标的最佳方法是什么?
谢谢
是的,对于大多数 vector 实现来说,这应该没问题。也就是说,这在大多数系统上的性能会很差,除非您有大量元素并且您正在访问彼此相距很远的元素,因此它们不会位于同一缓存行上……否则,在许多系统上,两个线程会来回使彼此的缓存无效(如果您经常读取/写入这些元素),导致两个线程中的大量缓存未命中。