2013-01-08 2 views
1

미래의 결과 (future/shared_future)를 클라이언트에 반환해야하는 API가 있습니다. 여러 클라이언트 (의사 코드)에 결과를 전달할 수있는 /해야하는 관련 std :: promise가 있기 때문에 "동일한 미래"객체를 여러 번 반환 할 수있는 경우가 있습니다.std :: 여러 클라이언트에 알릴 약속을했습니다.

std::future<int> getVal() 
{ 
    //I have a list of promises kept 
    if (promiseExists) 
    { 
    //this throws an exception because get_future() can be called only one time, unfortunately 
    return existingPromise.get_future(); 
    } 
    .... 
} 

문제는 당신이 동일한 인스턴스에 get_future()를 여러 번 전화를 걸거나 같은 약속에서 어떻게 든 shared_future 개체를 얻을 수 있다는 것입니다.

shared_future (existingPromise.get_future()에서 shared_future를 생성하여 얻음)를 반환하는 getVal을 해결할 수있는 방법이 있지만이 경우 promise 객체와 shared_future 객체를 캐시해야합니다. 어떻게 든 미래를 여러 번 다른 클라이언트에게 돌려 줄 수있는 객체를 약속하십시오. 이것을 할 수있는 방법이 있습니까?

답변

3

No.

왜 주위에 약속을해야합니까? 결과 제공자는 약속이 필요하며 결과의 모든 소비자는 (공유 된) 미래 만 필요합니다.

+0

콜백을 사용하는 API가 있으므로 API를 끝낼 때 결과를 설정할 수 있도록 약속을 스스로 지켜야합니다. – Gmt

관련 문제