研究如下问题:
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; }