Producer thread
std::promise<T>나중에 값을 준비하는 소유자입니다.
결과 확정
set_value() set_exception()둘 중 하나로 공유 상태를 ready로 만듭니다.
두 객체는 같은 공유 상태를 바라봅니다. 값이나 예외는 한 방향으로 전달되고, `future.get()`은 그 결과가 준비될 때까지 기다립니다.
나중에 값을 준비하는 소유자입니다.
둘 중 하나로 공유 상태를 ready로 만듭니다.
결과를 기다리는 손잡이입니다.
준비 전이면 블록하고, 준비 후에는 값을 한 번 가져옵니다.
promise가 쓰고 future가 읽습니다.
소유권이 명확해야 하므로 복사하지 않습니다.
값 설정 없이 promise가 사라지면 future는 예외를 받습니다.