Встал вопрос как и где хранить класс
public class Foo {
public IList<string> FooProp1 {get;set;}
public IList<Bar> FooProp2 {get;set;}
public int FooProp3 {get;set;}
//...
}
в случае работы с ним в разных потоках (Threads, не процессах). Собственно не могу вспомнить общая ли память у всех потоков процесса, или под каждый поток есть какая-то своя куча? Не будет ли при вызовах типа
Foo foo = new Foo();
//thread1 code
ExecuteThread2Code(foo);
foo = ExecuteThread3Code();
//thread1 code
происходить лишние телодвижения по копированию объектов в памяти?