2014-11-11 1 views
1

동일한 기능 fooC++ 미래 호 로컬 변수

a = async(launch::async,foo); 
b = async(launch::async,foo); 

이 함수를 두 번 실행하는 것과 동일에게 I 정의한 경우 2 미래 a,b 개체, 함수 호출 및 호출 ++ 미래 C를 사용?

foo() 
foo() 

abfoo의 각 실행 자신의 개인 사본을입니까?

답변

0

이 예제와 동일한 기능을 사용합니다.

void foo() 
{ 
    static int counter=0; 
    cout<<counter++<<endl; 
    return; 
} 

int main() 
{ 
    std::future<void> resultA(async(launch::async,foo)); 
    resultA.get(); 

    std::future<void> resultB(async(launch::async,foo)); 
    resultB.get(); 

    return 0; 
} 

출력 :

0

1

이것은 (1 상기 동일한 정적 카운터 변수가 출력 0,0 그러나 0이 BCZ 사용되는 것을 나타낸다 foo에 들어갈 때마다 증가됨)

도움이 되었으면

+0

하지만 함수 호출 사이의 카운터 값을 유지하는'static' 키워드 때문입니다. 이 의미에서 foo()를 직접 두 번 실행하는 것과 같습니다. http://msdn.microsoft.com/en-us/library/s1sb61xd.aspx –

+0

그 대답의 시작 부분에서 내가 말하고있는 것은 "예제에서 보여주는 것과 동일한 기능을 사용합니다"입니다. 답변을 확인하기 위해 누락 된 사항은 무엇입니까? – Gabriel

+0

의도적으로 동일한 코드를 두 번 통과한다는 것을 보여주기 위해 정적 멤버를 사용했습니다. 그게 지금 말이 되니? – Gabriel