내가 스레드 빌딩 블록 책을 읽고 있어요에 대한 질문. 이 코드 조각을 이해할 수 없습니다.TBB/C++ 코드
FibTask& a=*new(allocate_child()) FibTask(n-1,&x);
FibTask& b=*new(allocate_child()) FibTask(n-2,&y);
이 지시어는 무엇을 의미합니까? 클래스 객체 참조와 새로운 작업을 함께? 설명 해줘서 고마워.
다음 코드는이 클래스 FibTask의 해상력이다. pointer
이미 할당 된 위치를 가정이 구문은 placement new라고
class FibTask: public task
{
public:
const long n;
long* const sum;
FibTask(long n_,long* sum_):n(n_),sum(sum_)
{}
task* execute()
{
if(n<CutOff)
{
*sum=SFib(n);
}
else
{
long x,y;
FibTask& a=*new(allocate_child()) FibTask(n-1,&x);
FibTask& b=*new(allocate_child()) FibTask(n-2,&y);
set_ref_count(3);
spawn(b);
spawn_and_wait_for_all(a);
*sum=x+y;
}
return 0;
}
};
그냥 nitpicking ... "빌딩 블록 스레딩" – Nav