1

早在 2009 年,可能是 Unity 2.0 之前的版本,我看到一个讨论线程表明 CreateChildContainer() 不是线程安全的:

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

Unity 2.0 确实(仍然)如此吗?Unity 3.0 或更高版本呢?

如本文所述,如果使用 WCF 实现 Unity,这一点尤其重要。这个想法是使用子容器来轻松处理 HierarchylifetimeManager 实例。虽然我现在想知道是否应该使用 PerRequestlifetimemanager 而根本没有子容器。

4

1 回答 1

1

基于最新的源代码(Unity 3.5)。它应该是线程安全的。它将自己添加到父级的生命周期容器中,并围绕其私有子级列表的修改parent.lifetimeContainer.Add(this);实现Add使用。lock()

于 2014-05-29T22:34:08.623 回答