关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回

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

发布时间:2022-07-27 13:55:30
研究如下问题:(C#-多线程)在线程中创建ob
ject,共享问题。

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;
        }
 

/template/Home/DawnNew/PC/Static

立即注册风纳云账号,免费体验多款产品

立即注册