定义一个singleton对象,其中包括这个Hashtable的对象,这个singleton向外提供读写Hashtable对象的接口,也就是作为一个wrapper facade。这样,多线程可以共享这个singleton对象来访问hashtable。
singleton对象必须使用双检查校验模式,或者使用微软C#特有的singleton模式,以确保线程安全!上面的这些没有弄过,请高手给出一个范例参考参考,谢谢。
singleton对象必须使用双检查校验模式,或者使用微软C#特有的singleton模式,以确保线程安全!上面的这些没有弄过,请高手给出一个范例参考参考,谢谢。
{
private static readyonly singleton _singleton= new singleton();
private Hashtable _hashTable = new Hashtable();
private singleton()
{
}
public static singleton GetInstance()
{
return _singleton;
}public void Add(object key, object value)
{
_hashTable.Add(key, value);
}
public object Get(object key)
{
return _hashTable[key];
}
}
singleton.GetInstance().Add("hello", "world");
Console.Write(singleton.GetInstance.Get("hello"));
private class ClassA
{
#region 双检锁
private static object m_syn = new object();
private static ClassA m_Instance;
/// <summary>
/// 获取对象
/// </summary>
public static ClassA Instance
{
get
{
// 非空判断
if (m_Instance == null)
{
// 锁定
lock(m_syn)
{
// 非空判断
if (m_Instance == null)
{
m_Instance = new ClassA();
}
}
}
return m_Instance;
}
}
/// <summary>
/// 私有构造函数
/// </summary>
private ClassA()
{
}
#endregion 双检锁 结束
}