2017-02-26 25 views
1

我正在寫一個程序,將多線程。線程將全部從共享數據中讀取,但不會寫入。在這種情況下是否存在數據競爭?我不認爲它是這樣,因爲我沒有寫任何共享數據,但我想問問並確定。如果您只讀取共享數據,是否存在數據競爭?

+0

您正在使用哪個平臺?數據何時寫入?底層內存模型是否確保當一個線程正在讀取它時,它不會使用自己的緩存(或者它具有最新值),並且寫入端將緩存刷新到主內存? – rethab

+0

Windows上的C++現在。數據在線程作用於內存之前在內存中建立,並且數據在程序執行期間不會改變。數據存儲在std :: vector中 – Azaral

回答

0

如果在創建線程池A之前寫入共享數據,並且之後再也不會再次寫入,則線程池A可以同時讀取相同的共享數據。

創建線程會產生內存屏障,因此數據將保證與線程池A同步,並且不存在數據競爭。