我有一个包含非常大的双精度 3D 数组的对象,我需要启动一个需要该数组数据的新线程,所以我要么需要启动一个传递对象的新线程(其中包含大量其他数据)到新线程,或者我只是将 3D 数组传递给新线程。对于第一个解决方案,我只需执行以下操作:
MyClass
{
...
public double[,,] _data = new double[x,y,z];
...
}
MyMethod(object MyObject)
{
//do stuff with (MyObject as MyClass)
}
MyClass _newObject = new MyClass();
Thread thread = new Thread(new ParameterizedThreadStart(MyMethod));
thread.Start(_newObject);
我现在的问题:当我将对象传递_newObject
给新线程时,该对象是通过引用发送到线程还是被复制的对象和新线程使用的副本?问题是该对象包含大约 300MB 的数据,如果使用副本几乎是不可能的,因为我需要启动大约 10 个需要使用该对象数据的线程。