在多线程应用程序(ASP.NET MVC)上,我需要一个全局设置类,其中包含从Web.Config中获取的常量和值.
我想让这个类静态,作为单身......并锁定?
public static class Settings {
public static LoggerSettings Logger;
public static MailerSettings Mailer;
public class LoggerSettings {
public String Levels { get { return ConfigurationManager.AppSettings["Logger.Levels"]; } }
public const String Report = "team@xyz.com";
} // LoggerSettings
public class MailerSettings {
public String Contact { get { return ConfigurationManager.AppSettings["Mailer.Contact"]; } }
} // MailerSettings
}
Run Code Online (Sandbox Code Playgroud)
我想我应该实行双锁?没有?
我不确定这样做的最好方法.我能帮忙吗?
谢谢你,米格尔
Eri*_*ert 10
我希望这个类是静态的,就像单身一样
要在C#中正确实现单例,请参阅Jon Skeet关于什么有效和无效的优秀摘要:
http://csharpindepth.com/Articles/General/Singleton.aspx
我想我应该实行双锁?没有?
不可以.双重检查锁定是一种低锁技术,因此在弱内存模型硬件上非常危险.一旦你从一个"幸福"的模式中迷失了最轻微的那一刻,你已经放弃了程序可预测的所有希望.
我将使用双重检查锁定的唯一情况是满足以下所有条件时:
Lazy<T>具有可接受的性能?至少你知道CompareExchange Lazy<T>是由专家编写的,并且在所有硬件上都适当地强制执行内存屏障.如果已经实施了更好的工具,请不要使用双重检查锁定.| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |