future_status — std::future_status

future_status — std::future_status

std::future_statusstd::future/std::shared_futurewait_forwait_until 함수가 반환하는 future의 상태를 지정하는 열거형이에요. C++11에서 도입됐어요. <future> 헤더에 있어요.

출처: cppreference

본문

// <future> 헤더, C++11
enum class future_status {
    ready,
    timeout,
    deferred
};

열거자 의미

열거자 의미
ready 결과가 준비됨
timeout 시간 제한 내에 결과가 준비되지 않음
deferred 지연된(deferred) 작업 — 아직 실행되지 않음

사용 예

#include <future>
#include <iostream>
#include <thread>

std::future<int> f = std::async(std::launch::async, [] {
    std::this_thread::sleep_for(std::chrono::milliseconds(500));
    return 42;
});

auto status = f.wait_for(std::chrono::milliseconds(100));
// 100ms 동안 대기

switch (status) {
    case std::future_status::ready:
        std::cout << f.get() << '\n';   // 준비됨
        break;
    case std::future_status::timeout:
        std::cout << "아직 준비 안 됨\n";
        break;
    case std::future_status::deferred:
        std::cout << "지연 실행\n";
        break;
}

특징

  • 비차단·시간 제한 대기의 결과를 나타내요.
  • deferredstd::async(std::launch::deferred, ...)로 만든 future가 아직 실행되지 않았을 때 반환돼요.
  • 반복하며 상태를 폴링해 작업 완료를 감지할 수 있어요.
// 폴링 루프
while (f.wait_for(std::chrono::milliseconds(10)) != std::future_status::ready) {
    // 아직 진행 중
}
int result = f.get();

std::future_status는 시간 제한 대기에서 future 작업의 진행 상태(준비·시간초과·지연)를 구분하는 데 사용해요.

더 알아보기 (Learn more)

cppreference