资源分配器资源分配过程
每次资源分配器从其持有者分配资源时,都会发生以下情况:
资源分配器声明资源类型标识符 (RESTYPID),用于描述所需的资源类型。
资源分配器调用持有人的 IHolder::AllocResource 方法,并传递此 RESTYPID。
持有人根据可用资源生成候选列表。 候选项是未在事务中登记或已在调用对象的事务中登记的资源。
这些候选项分别传递给 IDispenserDriver::RateResource 方法,在该方法中,根据候选项资源与所需 RESTYPID 的匹配程度对它们进行评级(使用 0 到 100 的尺度)。
持有人选择资源分配器费率最高的资源。
资源分配器可以通过向候选项分配 100(完美匹配)的资源评级来提前终止评级循环。 除非资源分配器认为登记是一项廉价的操作,否则通常会为已经正确登记的候选资源保留 100 的评级。 如果所有候选资源(如果有)都评级为 0(不可用),则通过调用 IDispenserDriver::CreateResource 创建一个新资源。
如果之前选择的资源尚未在调用对象的事务中登记,则会调用资源分配器的 IDispenserDriver::EnlistResource 方法。
AllocResource 方法调用返回到具有已登记资源的资源分配器。
相关主题