2017-07-15 96 views
0

我想在多线程应用程序中使用NClone。NClone线程安全吗?

Clone.ObjectGraph(myObject) 

NClone的ObjectGraph是一种静态方法。假设我保护我的对象(因此在克隆操作期间没有其他线程可以访问这些对象),Clone.ObjectGraph本身是线程安全的(同时只克隆不同对象),还是应该保护克隆.ObjectGraph(...)操作本身来防止再次进入? (听起来可怕的瓶颈)

回答

2

您可以分析NClone的源代码:https://github.com/mijay/NClone

当我看到Clone.ObjectGraph是线程安全的becase的它会创建自己的ReplicationContextfor every call

public T Replicate<T>(T source) 
{ 
    return new ReplicationContext(replicationStrategyFactory).Replicate(source).As<T>(); 
}