То, что вы используете несколько потоков в .Net, не означает, что будет использоваться маршалинг.Marshaling вступает в игру, когда вы обмениваетесь объектами между доменами приложений.
Если предположить, что доменов приложений нет, то накладные расходы, которые вы бы заплатили, будут блокироваться - убедитесь, что только один поток одновременно обращается к объекту.Каждый раз, когда вы блокируете и разблокируете объект, он будет занимать несколько циклов ЦП.
Использование нескольких потоков может также добавить другие штрафы - например, если вам нужно переключиться с потока A на поток B, чтобы выполнить какую-то задачу, тогдаможет быть наказание за переключение потоков.Если ЦП должен уложить поток A в постель и активировать поток B, то на это потребуется несколько циклов процессора.Даже если поток A и поток B работают на разных ЦП, но изменяют общие данные, данные в кэшах ЦП, возможно, придется отбросить (сбой кэша).Просто предупреждение, что вы можете попытаться ускорить что-то, обрабатывая параллельно, но в конечном итоге замедляете работу вашего приложения.
Маршалинг будет использоваться, если вы обращаетесь к объекту, созданному в одном .Net AppDomain из другого.И, в зависимости от типа используемого вами маршалинга, вы можете выбрать одноразовый штраф (маршал по значению) или штраф за вызов (маршал по ссылке).