инструкция newobj от CLR - PullRequest
       3

инструкция newobj от CLR

1 голос
/ 12 февраля 2012

Эндрю Троелсен в своей книге Pro C # 2008 и платформе .NET 3.5, четвертое издание говорит, объясняя инструкцию newobj из CLR страница №.248, первый параграф третий маркер

перед возвратом ссылки вызывающей стороне, передвиньте указатель следующего объекта, чтобы указать на следующий доступный слот в управляемой куче

звучит как передвигает следующий указатель объекта - это выигрыш в блоке lock (или что-то подобное), чтобы обеспечить правильное увеличение этого указателя после каждого создания объекта в управляемой куче всеми потоками .net.Я прав или совершенно неправ?

1 Ответ

2 голосов
/ 12 февраля 2012

Прежде всего, это деталь реализации. Есть много способов реализовать это, и реализация CLR может свободно выбирать то, что ей нравится.

Несколько возможных реализаций:

  1. Используйте блокировку, как вы предлагаете
  2. Используйте «безблокировочные» методы, такие как Interlocked.Exchange
  3. Выделите из разных областей в каждой теме. Например, имея отдельную кучу Gen0 на поток.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...