2013-02-12 2 views
1

최근에 이터레이터와 풀에서 the 2012 rationale 부분을 읽었습니다. 개관 된 것들 중 하나는 서브 풀에 관한 새로운 능력입니다. 서브 풀과 풀 풀의 차이점은 풀리지 않은 질문입니다. 이것은 같은 것으로 달성 될 수 있습니다 :새로운 Ada 서브 풀 기능과 풀 풀의 차이점은 무엇입니까?

-- Minnesota: Land of 10,000 Lakes 
type Minnesota(Size: Storage_Count) is new Root_Storage_Pool with private; 
type Lake(Size: Storage_Count) is new Root_Storage_Pool with private 
    with Storage_Pool => Minnasota; 
-- ... 
type Pooled is [...] with Storage_Pool => Lake; 

서브 풀을 사용하지 않았으므로 나는 틀 렸을 수도 있음을 인정하지만 훨씬 적은 풀을 (아직) 인정합니다.

답변

0

랜디 브루 커트 (Randy Brukardt)로부터 Comp.Lang.Ada.

화면 Storage_Pool는 유형 (13.11(15) 및 등)에 액세스하고, 호수는 액세스 유형이 아닌 유형에 적용되는, 그래서 이것은 불법 (그리고 는 아무 의미도하지 않습니다).

구현 내에 다른 풀을 넣어 하나의 풀을 구현할 수 있습니다 (여기에는 미네소타에 10000 개의 호수 배열을 포함하여 :-)가 포함됩니다. 그런 다음 어느 항목이 각각 에 속하는지, 에헴, 서브 풀에 속하는 항목을 선택해야합니다. 그리고 당신은 바퀴를 다시 발명 할거야.

최종 마무리 문제가 있습니다. 하위 풀 메커니즘은 하위 풀을 명시 적으로 ( Unchecked_Deallocation가하는 것처럼) 초기에 파괴 된 경우에도, (객체 자체를 하위 풀 오래 살 수있는 객체 에 대한 포인터가 아닌) 개체가 하위 풀보다 오래하지 않는 을 보장합니다. 언어 지원 (우리가 에 대해 말한 모든 손으로 작성한 서브풀 구현은 컨트롤, 보호 또는 작업 객체가 할당되어 있지 않음을 주장했지만 분명히 제한적 임).

나는이 권리를 얻는 것이 어렵고 논쟁의 여지가 있음을 확신시켜드립니다. 거의 몇 번 떨어졌다. 너 자신을하는 것은 논쟁이되는 (나는 희망한다!) 그러나 would not는 아직도 어려울 것이다. ARG에는 이미 이 수행되었으므로 더러운 작업을 수행하는 것이 가장 좋습니다.

          Randy.