리소스 디스펜서 리소스 할당 프로세스
리소스 디스펜서가 소유자로부터 리소스를 할당할 때마다 다음이 발생합니다.
리소스 디스펜서는 필요한 리소스의 유형을 설명하는 RESTYPID(리소스 종류 식별자)를 선언합니다.
리소스 디스펜서는 홀더의 IHolder::AllocResource 메서드를 호출하여 이 RESTYPID를 전달합니다.
보유자는 사용 가능한 리소스에서 후보 목록을 생성합니다. 응시자는 트랜잭션에 등록되지 않았거나 호출 개체의 트랜잭션에 이미 등록되어 있는 리소스입니다.
이러한 후보는 후보 리소스가 원하는 RESTYPID와 얼마나 잘 일치하는지(0에서 100까지) 등급이 지정된 IDispenserDriver::RateResource 메서드에 개별적으로 전달됩니다.
보유자는 리소스 디스펜서 속도가 가장 높은 리소스를 선택합니다.
리소스 디스펜서는 후보에게 100(완벽한 적합)의 리소스 등급을 할당하여 등급 루프를 일찍 종료할 수 있습니다. 리소스 디스펜서가 인리스트먼트가 저렴한 작업이라고 결론을 내리지 않는 한, 일반적으로 100 등급은 이미 제대로 등록된 후보 리소스에 대해 예약됩니다. 모든 후보 리소스(있는 경우)의 등급이 0(사용할 수 없음)인 경우 IDispenserDriver::CreateResource를 호출하여 새 리소스가 만들어집니다.
이전에 선택한 리소스가 호출 개체의 트랜잭션에 아직 등록되지 않은 경우 리소스 디스펜서의 IDispenserDriver::EnlistResource 메서드가 호출됩니다.
AllocResource 메서드 호출은 인리스트먼트된 리소스를 사용하여 리소스 디스펜서로 돌아갑니다.
관련 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기