Passar referência de objeto para um novo Thread
Eu tenho um objeto que contém uma matriz 3D muito grande de duplas e eu preciso iniciar um novo segmento que precisa dos dados dessa matriz, então eu vou precisar iniciar um novo segmento passando o objeto (que contém um monte de outros dados também) para o novo thread ou apenas passo o array 3D para o novo thread. Para a primeira solução, eu simplesmente faria o seguinte:
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);
Minha pergunta agora: Como eu passo o objeto_newObject
para o novo segmento, esse objeto é enviado para o segmento por referência ou é o objeto copiado e a cópia usada pelo novo segmento? O problema é que o objeto contém dados de cerca de 300MB e seria quase impossível se as cópias fossem usadas, já que eu preciso começar com 10 threads que precisam usar dados desse objeto.