다음을 통해 공유


packaged_task 클래스

비동기 공급자(해당 호출 시그니처가 Ty(ArgTypes...)인 호출 래퍼)를 설명합니다. 비동기 공급자의 연결된 비동기 상태에는 잠재적 결과와 함께 호출 가능 개체의 복사본이 포함됩니다.

구문

template <class>
class packaged_task;

멤버

공용 생성자

속성 설명
packaged_task packaged_task 개체를 생성합니다.
packaged_task::~packaged_task 소멸자 packaged_task 개체를 제거합니다.

공용 메서드

이름 설명
get_future 동일한 연결된 비동기 상태가 있는 future 개체를 반환합니다.
make_ready_at_thread_exit 연결된 비동기 상태에 저장되어 있는 호출 가능 개체를 호출하고 반환된 값을 원자 단위로 저장합니다.
reset 연결된 비동기 상태를 대체합니다.
swap 연결된 비동기 상태를 지정된 개체와 교환합니다.
유효한 개체에 연결된 비동기 상태가 있는지를 지정합니다.

Public 연산자

이름 설명
packaged_task::operator= 지정된 개체에서 연결된 비동기 상태를 전송합니다.
packaged_task::operator() 연결된 비동기 상태에 저장되어 있는 호출 가능 개체를 호출하고 반환된 값을 원자 단위로 저장한 후에 상태를 ready로 설정합니다.
packaged_task::operator bool 개체에 연결된 비동기 상태가 있는지를 지정합니다.

요구 사항

헤더:<future>

네임스페이스: std

packaged_task::get_future

동일한 연결된 비동기 상태가 있는 future<Ty> 형식의 개체를 반환합니다.

future<Ty> get_future();

설명

packaged_task 개체에 연결된 비동기 상태가 없는 경우 이 메서드는 오류 코드가 no_statefuture_error를 throw합니다.

이 메서드는 연결된 비동기 상태가 동일한 packaged_task 개체에 대해 이미 호출된 경우 오류 코드가 future_already_retrievedfuture_error를 thorw합니다.

packaged_task::make_ready_at_thread_exit

연결된 비동기 상태에 저장되어 있는 호출 가능 개체를 호출하고 반환된 값을 원자 단위로 저장합니다.

void make_ready_at_thread_exit(ArgTypes... args);

설명

packaged_task 개체에 연결된 비동기 상태가 없는 경우 이 메서드는 오류 코드가 no_statefuture_error를 throw합니다.

이 메서드 또는 make_ready_at_thread_exit가 동일한 연관 비동기 상태의 packaged_task 개체에 대해 이미 호출된 경우 이 메서드는 오류 코드가 promise_already_satisfiedfuture_error를 throw합니다.

그렇지 않으면 이 연산자는 INVOKE(fn, args..., Ty)를 호출합니다. 여기서 fn은 연결된 비동기 상태에 저장되어 있는 호출 가능 개체입니다. 반환된 모든 값은 연결된 비동기 상태에서 반환된 결과로 원자 단위로 저장됩니다.

packaged_task::operator()와 달리 연결된 비동기 상태는 호출 스레드의 모든 스레드 로컬 개체가 제거될 때까지 설정 ready 되지 않습니다. 일반적으로 연결된 비동기 상태에서 차단된 스레드는 호출 스레드가 종료될 때까지 차단 해제되지 않습니다.

packaged_task::operator=

지정된 개체에서 연결된 비동기 상태를 전송합니다.

packaged_task& operator=(packaged_task&& Right);

매개 변수

Right
packaged_task 개체입니다.

Return Value

*this

설명

작업 후 Right 에는 더 이상 연결된 비동기 상태가 없습니다.

packaged_task::operator()

연결된 비동기 상태에 저장되어 있는 호출 가능 개체를 호출하고 반환된 값을 원자 단위로 저장한 후에 상태를 ready로 설정합니다.

void operator()(ArgTypes... args);

설명

packaged_task 개체에 연결된 비동기 상태가 없는 경우 이 메서드는 오류 코드가 no_statefuture_error를 throw합니다.

이 메서드 또는 make_ready_at_thread_exit가 동일한 연관 비동기 상태의 packaged_task 개체에 대해 이미 호출된 경우 이 메서드는 오류 코드가 promise_already_satisfiedfuture_error를 throw합니다.

그렇지 않으면 이 연산자는 INVOKE(fn, args..., Ty)를 호출합니다. 여기서 fn은 연결된 비동기 상태에 저장되어 있는 호출 가능 개체입니다. 반환된 모든 값은 연결된 비동기 상태에서 반환된 결과로 원자 단위로 저장되며 상태는 ready로 설정됩니다. 그 결과로 연결된 비동기 상태에서 차단된 모든 스레드의 차단은 해제됩니다.

packaged_task::operator bool

개체에 associated asynchronous state가 있는지를 지정합니다.

operator bool() const noexcept;

Return Value

개체가 연결된 비동기 상태이면 true이고, 그렇지 않으면 false입니다.

packaged_task::packaged_task 생성자

packaged_task 개체를 생성합니다.

packaged_task() noexcept;
packaged_task(packaged_task&& Right) noexcept;
template <class Fn>
   explicit packaged_task(Fn&& fn);

template <class Fn, class Alloc>
   explicit packaged_task(
      allocator_arg_t, const Alloc& alloc, Fn&& fn);

매개 변수

Right
packaged_task 개체입니다.

Alloc
메모리 할당자입니다. 자세한 내용은 할당자를 참조 <하세요>.

Fn
함수 개체입니다.

설명

첫 번째 생성자는 연결된 비동기 상태가 없는 packaged_task 개체를 생성합니다.

두 번째 생성자는 개체를 packaged_task 생성하고 Right에서 연결된 비동기 상태를 전송합니다. 작업 후 Right 에는 더 이상 연결된 비동기 상태가 없습니다.

세 번째 생성자는 연결된 비동기 상태에 저장된 fn 복사본이 있는 개체를 생성 packaged_task 합니다.

네 번째 생성자는 연결된 비동기 상태에 저장된 fn 복사본이 있는 개체를 생성 packaged_task 하고 메모리 할당에 사용합니다alloc.

packaged_task::~packaged_task 소멸자

packaged_task 개체를 제거합니다.

~packaged_task();

설명

연결된 비동기 상태가 준비되지 않은 경우 소멸자는 연결된 비동기 상태broken_promise 결과로 오류 코드가 있는 future_error 예외를 저장하고 연결된 비동기 상태에서 차단된 모든 스레드는 차단 해제됩니다.

packaged_task::reset

기존의 연결된 비동기 상태를 교체할 새 연결된 비동기 상태를 만듭니다.

void reset();

설명

실제로 이 메서드는 *this = packaged_task(move(fn))를 실행합니다. 여기서 fn은 이 개체에 대한 연결된 비동기 상태에 저장되는 함수 개체입니다. 따라서 개체의 상태가 지워지고 get_future, 연산자(), make_ready_at_thread_exit 새로 생성된 개체에서처럼 호출할 수 있습니다.

packaged_task::swap

연결된 비동기 상태를 지정된 개체와 교환합니다.

void swap(packaged_task& Right) noexcept;

매개 변수

Right
packaged_task 개체입니다.

packaged_task::valid

개체에 associated asynchronous state가 있는지를 지정합니다.

bool valid() const;

Return Value

개체가 연결된 비동기 상태이면 true이고, 그렇지 않으면 false입니다.

참고 항목

헤더 파일 참조
<future>