(C#- 多线程) 在线程中创建object,共享问题。

研究如下问题:

1. 在一个进程的主线程中创建一个Object,其他线程都可以访问这个Object,并操作Object的方法。 - 多线程同步问题。

2. 在一个进程的多个线程里面,每个线程都创建同一个Class的Object,并操作Object的方法。 - 会有同步问题吗,如果这个Object是个Singleton呢?

这两个问题可以理解为作用域的范围的问题。

第1个问题中,在主线程中诞生的Object对于多个线程来说是全局变量。

第2个问题中,在各个线程中诞生的Object对于每个线程来说是局部变量。其作用域范围只在各自的线程中,在内存中的存储都在不同的位置。通过code也可以判断

        static int GetObjectReferenceAddress(Object obj)
        {
            GCHandle handle = GCHandle.Alloc(obj, GCHandleType.WeakTrackResurrection);
            int address = GCHandle.ToIntPtr(handle).ToInt32();
            return address;
        }
 
原文地址:https://www.cnblogs.com/fdyang/p/11403774.html