문제

나는 매우 느린 함수로 계산하는 데 필요한 값을 사용하는 것으로 프로그램에서 몇 가지 기능을 가지고 있습니다.이 값은 프로그램이 다시 실행될 때마다 변경 될 수 있으므로 정적 값을 저장할 수 없습니다.다음은 예제입니다.

void this_gets_called_frequently()
{
    static int value = slow_function();

    //do stuff with the above value
}
.

내 주요 문제는 여기서는 작동하지 않는 프로그램 중 하나가 아니라 깔끔함이 아닙니다.나는 실제로 전역 변수를 초기화하고 계산되면 변경되지 않기 때문에 가치를 저장하고 싶지 않습니다.위에 표시된 방식으로 정적 키워드를 사용하면 위의 함수를 한 번 계산하도록 호출 할 수 있습니까?Song 키워드가 도움이됩니까?

감사합니다. 모두 완벽하게 답변되었습니다!

도움이 되었습니까?

해결책

예, 로컬 static 변수의 초기화는 최대 한 번 발생합니다 (일부 컴파일러 버전을 여기에서 멀티 스레딩에 문제가있을 수 있음을 회상 할 수 있음). const는 필요하지 않습니다.이 경우 주로 가독성과 맛의 문제입니다.

다른 팁

위에 표시된 방식으로 정적 키워드를 사용하면 위의 기능을 한 번 계산하도록 호출 할 수 있습니까?

예, this_gets_called_frequently의 첫 번째 호출에서

에는 도움이 필요합니다.

아니오.그러나 문서 값에 const를 추가하십시오.

사용하면 컴파일러에서 사용할 수있는 경우 C ++ 11에서 스레드 로컬 변수를 사용할 수 있습니다.Windows에있는 경우 유사한 TlsAlloc API를 사용할 수 있습니다.Win32의 새벽이 일어난 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top