2013-10-30 61 views
1

早在2009年,它可能已经预先统一2.0,我看到一个thread of discussion这表明CreateChildContainer()不是线程安全的:是CreateChildContainer()线程安全吗?

另外,如果你创建CreateChildContainer()方法的子容器,他们将在创建时将其自己添加到其父容器的实时容器中,并在处置时将其移除。因此,从独立线程处理子容器可能会导致错误,即使每个子容器在一次只能由一个线程访问。

这对Unity 2.0来说确实(仍然)是真的吗? Unity 3.0或更高版本呢?

如果使用WCF实现Unity,如this article中所述,这是特别有意义的。这个想法是使用一个子容器来轻松处理HierarchylifetimeManager实例。虽然我现在想知道是否应该使用PerRequestlifetimemanager而不使用子容器。

回答

1

基于最新的源代码(Unity 3.5)。它应该是线程安全的。它将自己添加到父母的终身容器中,其中Add使用lock()围绕其私人儿童名单的修改。