2011-10-07 110 views
2

就C++ 11而言,我是否认为在至少两个线程之间共享的值语义对象的副本不是线程安全的?复制是否线程安全?

这意味着如果我们想在一个线程中获得一个大对象的副本,我们仍然需要一些同步机制来创建副本?

+1

一个共享但只读不需要同步(以为我会精确)。 –

回答

5

这意味着如果我们想在一个线程中获得一个大对象的副本,我们仍然需要一些同步机制来创建副本?

是的。如果从其他线程访问(写入)对象并且想要复制该对象,则必须确保访问已同步。

1

线程安全只与共享对象的上下文有关。如果要复制的对象只能被复制的线程访问,则不需要同步。

+0

我明显在谈论一个共享对象的副本,我会在问题中加入它。 – Klaim

+0

@Klaim:对我不明显。并发编程的一个相当明智的方法是无共享架构,即可变对象永远不会共享 - 只能被复制。 –

+0

我同意,我修改了答案,使其更加清晰。我不会分享对象,直到不可能做另一种方式。但我想也许可能有新的C++ 11规则说复制是异常的,但仍然怀疑它,所以我问。 :) – Klaim