单例类中的线程安全方法

时间:2014-04-05 14:30:13

标签: c# multithreading

问题是Thread - safe singelton

的后续行动

我有以下课程:

public class MyLazySingleton
{
    // static holder for instance, need to use lambda to construct since constructor private
    private static readonly Lazy<MyLazySingleton> _instance
        = new Lazy<MyLazySingleton>(() => new MyLazySingleton());

    // private to prevent direct instantiation.
    private MyLazySingleton(string str,int i)
    {
             s_c1 = SingletonClass1.Instance(str);
             s_c2 = SingletonClass2.Instance(str);
             s_c3 = SingletonClass3.Instance(i);
    }

    // accessor for instance
    public static MyLazySingletonInstance
    {
        get
        {
            return _instance.Value;
        }
    }
    public void func1()
    {
        if (s_s1.Measure() || s_c2.Measure())
        {
           c_c3.Do();
        }
    }
       static SingletonClass1 s_c1 = null;
       static SingletonClass2 s_c2 = null;
       static SingletonClass3 s_c3 = null;
}
  1. 我开始实现它有一个带参数的构造函数,但不知道如何继续。有什么建议?
  2. 我在上一个问题的评论中说过,func1不是thread-safe。如何使其线程安全? MyLazySingleton被定义为Lazy不是为了线程安全吗?

0 个答案:

没有答案