线程安全方法调用

时间:2014-08-04 11:33:22

标签: multithreading object thread-safety c#-3.0

请让我知道下面的方法调用是否是线程安全的。 我在主线程上调用ThreadStartMain并在新实例上创建新线程并调用A_GetCounryName方法。

由于我总是通过新实例调用,我认为这是线程安全的,即使我在某些类中有实例变量。

 class MyThread
    {
        private void ThreadStartMain()
        {
            for (int i = 0; i < 5; i++)
            {
                A a = new A();
                ThreadStart start = new ThreadStart(a.A_GetCounryName);
                Thread t = new Thread(start);
                t.Start();
            }
        }
    }

    class A
    {
        public B GetNewObject()
        {
            B bObj = new B();
            return bObj;
        }

        public void A_GetCounryName()
        { 
            B b=GetObject();
            string cName=b.B_GetCoutryName();
        }
    }

    class B
    {
        C cObj = null;

        public B()
        {
            cObj = new C();
            cObj.Prop1 = 1;
            cObj.Prop1 = 2;
            cObj.Prop1 = 3;
        }

        public string B_GetCoutryName()
        {
           string countryName= cObj.C_GetCoutryName();
           return countryName;
        }
    }


    class C
    {
        public int Prop1 { get; set; }
        public int Prop2 { get; set; }
        public int Prop3 { get; set; }

        public string C_GetCoutryName()
        {
            string name = "Italy";
            return name;
        }
    }

1 个答案:

答案 0 :(得分:1)

是的,这是安全的,因为您的线程不共享状态。更确切地说:他们不访问公共存储位置。