2013-10-30 155 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()圍繞其私人兒童名單的修改。