우리는 이것이 TBB 스레드 풀을 초기화하려면 다음 TBB 코드를 사용하여 수행됩니다 몇 가지 처리를 수행 할 작업을 산란 TBB를 이용하여 코드 조각이 누출 (코어의 수와 일치합니다) :TBB 스폰 작업 메모리는
tbb::task_scheduler_init(8);
그런 다음 우리는 우리가 (MainTask가 TBB :: 작업 클래스에서 파생 된) 다음 코드를 사용하여 산란 할 각 작업 : 우리는 우리의 코드를 실행하면
task = new (tbb::task::allocate_root()) MainTask(theAction, theOutputData);
tbb::task::enqueue(*task);
우리는 일정 금액을 사용하여 시작 메모리에 저장되고, 프로그램이 실행되고 새로운 작업을 생성 할 때, 전술 한 바와 같이, 메모리 사용량은 점차 증가합니다. 40 분의 실행 시간에 12KB에서 213KB로 증가합니다. 이것은 우리의 처리 코드로 인해 도전적이지 않으며, 예상대로 실행을 완료 한 TBB allocate_root 태스크에서 메모리를 해제하지 않은 TBB의 결과 인 것으로 보입니다.
왜 이런 일이 발생합니까? 이 문제를 해결하기 위해 수행해야 할 다른 작업이 있습니까? 아니면이 문제를 해결할 allocate_root 방식을 사용하지 않고 TBB 작업을 생성 할 수있는 대체 방법이 있습니까?