함수 실행과 `future` 생성을 한 번에 처리합니다.
사용 지점
스레드 관리를 직접 하지 않고 계산 결과만 나중에 받을 때 적합합니다.
`std::future`는 결과를 받는 공통 통로이고, `async`, `promise`, `packaged_task`는 그 결과를 준비하는 방식이 다릅니다.
함수 실행과 `future` 생성을 한 번에 처리합니다.
스레드 관리를 직접 하지 않고 계산 결과만 나중에 받을 때 적합합니다.
생산자 스레드가 값이나 예외를 명시적으로 넣습니다.
데이터 준비 시점과 소비 시점을 분리해 스레드 간 통신을 만들 때 씁니다.
호출 가능한 객체를 `future`와 연결한 뒤 실행 위치를 직접 정합니다.
스레드 풀이나 작업 큐처럼 작업 생성과 실제 실행 위치를 분리할 때 씁니다.