在MVC应用程序中使用Singleton作用域时,是否会阻止其他线程访问我的单例对象,而一个线程已在其上调用方法?
例如:我有一个绑定在单一范围内的存储库。如果多个用户访问使用存储库从数据库中获取数据的页面,是否意味着直到第一个获取单例实例的线程完成其工作,第二个线程无法获取单例实例?
在这种情况下,如果我的存储库需要2-3秒来从db加载数据,这是否意味着另一个线程正在等待获取此单例对象?
由于
答案 0 :(得分:1)
没有。 Ninject只确保每个人都获得相同的对象。处理对象的并发访问是您(或对象的实现)的责任。
但是,如果单例的构造函数需要很长时间,则需要很长时间来实例化第一个将单例作为构造函数参数注入的对象。
通常不建议在构造函数中使用代价高昂(长时间运行)的代码。