几个线程同时读取同一块内存时是否会发生数据竞争?

3

cppreference.com

线程和数据竞争

当对内存位置进行表达式的写入,并且另一个表达式读取修改相同的内存位置时,这些表达式被称为冲突。除非...

这段文字谈到了“线程1写入线程2读取”(W-R)的情况,以及“线程1写入线程2修改”(W-M)的情况。

关于“thread1-read thread2-read”(R-R)怎么样?

8
简短回答是不可以。如果你只是在阅读,那么就没有比赛了。但你必须确保你只是在阅读,没有做其他事情。 - timpone
嗯,既然上下文没有提到数据竞争的情况... - molbdnilo
特别是,只要该内存位置上的数据从未更改过,任何线程都可以可靠地读取该位置并看到相同的值。 - Jeremy Friesner
1个回答

5

不,只要没有线程在该内存位置上无序写入数据,多个线程读取内存的顺序并不构成数据竞争。

该描述可能省略了这种情况,因为这种情况并不是数据竞争。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接