CLR GC线程分配上下文

问题描述

来自BOTR的样本: BOTR Documentation

#include "frames.h"
 {
 MethodTable *pMT = g_pObjectClass->getmethodTable();

//RIGHT
OBJECTREF a = AllocateObject(pMT);

GCPROTECT_BEGIN(a);
OBJECTREF b = AllocateObject(pMT);

DoSomething (a,b);

GCPROTECT_END();
}

我的问题是: 如果紧接在OBJECTREF之后b = AllocateObject(pMT);另一个线程导致GC,b无效。 真的吗?或由于不同线程的分配上下文不同,所以不会发生这种情况。

另一方面,基于BOTR: https://github.com/dotnet/coreclr/blob/master/Documentation/botr/garbage-collection.md#physical-representation-of-the-managed-heap

每个小对象堆中始终只有一个短暂段,即gen0和gen1所在的地方

这怎么可能?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)