2011-10-07 59 views
2

就C++ 11而言,我是否認爲在至少兩個線程之間共享的值語義對象的副本不是線程安全的?複製是否線程安全?

這意味着如果我們想在一個線程中獲得一個大對象的副本,我們仍然需要一些同步機制來創建副本?

+1

一個共享但只讀不需要同步(以爲我會精確)。 –

回答

5

這意味着如果我們想在一個線程中獲得一個大對象的副本,我們仍然需要一些同步機制來創建副本?

是的。如果從其他線程訪問(寫入)對象並且想要複製該對象,則必須確保訪問已同步。

1

線程安全只與共享對象的上下文有關。如果要複製的對象只能被複制的線程訪問,則不需要同步。

+0

我明顯在談論一個共享對象的副本,我會在問題中加入它。 – Klaim

+0

@Klaim:對我不明顯。併發編程的一個相當明智的方法是無共享架構,即可變對象永遠不會共享 - 只能被複制。 –

+0

我同意,我修改了答案,使其更加清晰。我不會分享對象,直到不可能做另一種方式。但我想也許可能有新的C++ 11規則說複製是異常的,但仍然懷疑它,所以我問。 :) – Klaim