2014-01-23 54 views
0

在MVC應用程序中使用Singleton作用域時,其他線程是否會被阻止訪問我的單例對象,而一個線程已經調用了它的方法?在ASP.Net中使用Ninject Singleton綁定MVC

例如:我有一個綁定在單例作用域中的存儲庫。如果多個用戶訪問使用存儲庫從數據庫提取數據的頁面,這是否意味着直到第一個獲得單例實例的線程完成其工作,第二個線程無法獲得單例實例?

在這種情況下,如果我的存儲庫需要2到3秒才能從db中加載數據,是否意味着其他線程正在等待獲取此單例對象?

謝謝

回答

1

不,Ninject只能確保每個人都得到相同的對象。處理併發訪問對象是你的(或對象的實現)責任。

但是,如果單例的構造函數需要很長時間,則需要很長時間來實例化第一個將單例注入爲構造函數參數的對象。

在構造函數中使用昂貴的(長時間運行的)代碼通常是不可取的。