일부 라이브러리는 설정 및 실행을 분리 할 수있는 기능을 제공합니다. 설정 부분에 제한되지 않은 대기 시간과 같은 바람직하지 않은 특성이있는 경우에는 특히 그렇습니다. setup + execute 모델을 사용하는 라이브러리의 반복 방지
프로그램이이 구조에 반영해야 할 필요가있는 경우
은, 가지고 자연 :void setupXXX(...); // which calls the setup stuff
void doXXX(...); // which calls the execute stuff
이 문제는 setupXXX 및 doXXX의 구조에 (매우 유사 될 것입니다 것입니다 최소한의 텍스트 - 제어 흐름은 doXXX에서 더 복잡 할 것입니다.)
이 문제를 방지 할 수있는 방법이 있는지 궁금 할 때가 있습니다.
예 : 주파수 영역에서 알려진 커널로 필터링 :
하는의 우리가 신호 처리를하고있는 가정 해 봅시다.
그래서, setupXXX 및 doXXX 아마 내가 당신의 코드가 어떻게 보이는지 잘 모르겠지만,
void doFilter(FilterStuff *c) {
for (int i = 0; i < c->N; ++i) {
doFFT(c->x[i], c->fft_forward_setup, c->tmp);
doMultiplyVector(c->tmp, c->filter);
doFFT(c->tmp, c->fft_inverse_setup, c->x[i]);
}
}
void setupFilter(FilterStuff *c) {
setupFFT(..., &(c->fft_forward_setup));
// assign the kernel to c->filter
...
setupFFT(..., &(c->fft_inverse_setup));
}
"setupXXX의 구조와 doXXX의 의미가 무엇인지 설명 할 수 있습니까?" 왜 그렇게해야합니까? 적어도 객체 지향 언어에서, 당신이 설정 한 객체는 이미 저장되어있는 정보의 대부분을 셋업 할 것이므로 매우 다른 정보가 필요합니까? 당신이 의미하는 바를 잘 모르겠어요. – mnemosyn
내가 무슨 뜻인지 예를 추가했습니다. – lijie