【发布时间】:2012-02-12 18:45:35
【问题描述】:
Andrew Troelsen 在他的书 Pro C# 2008 and the .NET 3.5 Platform, Fourth Edition 中解释 来自 CLR 的 newobj 指令 页号。 248,第一段第三子弹
在将引用返回给调用者之前,前进下一个对象指针以指向托管堆上的下一个可用槽
听起来推进下一个对象指针在lock 块(或类似的东西)内,以确保在所有.net 线程在托管堆上创建每个对象后正确递增该指针。我是对的还是完全错的?
【问题讨论】:
-
是的,函数名是“EnterAllocLock”。您可以在 CLR 的 SSCLI20 版本,clr/src/vm/gcsmp.cpp 源代码文件中看到它的可能实现。它有一个不寻常的优化,我不想解释。