2015-02-02 2 views
4

valid()과 다른 점에 유의하십시오. valid()은 미래에 유효한 공유 상태가 있는지 여부를 나타냅니다. 그러나 내가 알고 싶은 것은 미래 가치가 설정되었는지 (예 : std::promise::set_value을 통해) 여부입니다.std :: future에 값이 있는지 여부를 확인하는 방법은 무엇입니까?

wait_for 메서드가 있지만 호출 스레드가 전혀 블록되지 않게하려면 값이 있는지 확인하고 싶습니다. 이론적으로, 0 기간으로 wait_for을 호출 할 수는 있지만 실제로이 작업을 수행하는 것이 바람직한 지 여부는 알 수 없으며 wait_for이 0으로 호출 될 때 예상되는 동작이 무엇인지 확실하지 않습니다.

+6

[표준의 상태 가져 오기 :: future] (http://stackoverflow.com/q/10890242/3953764) –

+0

고마워! 다양한 출처 (이 답변 포함)에서 나는 함께 지속 시간이 0 인 wait_for가 작동해야한다고 결론지었습니다. – nicebyte

답변

0

std :: future를 사용하는 목적은 작업을 비동기 적으로 실행할 수있게하는 것입니다. 따라서 스레드가 미래가 준비 될 때까지 차단하고 값을 반환하기 때문에 나중에 값을 필요로 할 때만 get()을 호출하십시오.

+0

나는 그것이 항상 사실이라고 생각하지 않는다. 당신이 "궁극적 인 일관성"시나리오에있을 때는 어떨까? 미래를 막고 싶지 않을 수도 있습니다. – Curious

+0

앞으로 시간 초과로 대기 할 수 있습니다. – yano

관련 문제