작업 클래스(동시성 런타임)

PPL(병렬 패턴 라이브러리) task 클래스입니다. 개체는 task 동시성 런타임에서 병렬 알고리즘에 의해 생성된 다른 작업 및 병렬 작업과 비동기적으로 동시에 실행할 수 있는 작업을 나타냅니다. 이러한 작업이 정상적으로 완료되면 _ResultType 형식의 결과가 생성됩니다. task<void> 형식의 작업에서는 결과가 생성되지 않습니다. 작업은 다른 작업과 관계없이 대기 및 취소할 수 있으며 연속() 및 join( thenwhen_all) 및 choice( when_any) 패턴을 사용하여 다른 작업으로 구성할 수도 있습니다. 작업 개체가 새 변수에 할당되면 동작은 해당 동작입니다 std::shared_ptr. 즉, 두 개체 모두 동일한 기본 작업을 나타냅니다.

구문

template <>
class task<void>;

template<typename _ResultType>
class task;

매개 변수

_ResultType
태스크에서 생성하는 결과의 형식입니다.

멤버

공용 Typedefs

이름 설명
result_type 이 클래스의 개체가 생성하는 결과의 형식입니다.

공용 생성자

속성 설명
작업 오버로드됨. task 개체를 생성합니다.

공용 메서드

이름 설명
get 오버로드됨. 이 작업으로 생성된 결과를 반환합니다. 작업이 종료 상태가 아닐 경우 get에 대한 호출은 작업이 끝날 때까지 대기합니다. 이 메서드는 result_typevoid을 사용하는 작업에서 호출될 때는 값을 반환하지 않습니다.
is_apartment_aware 작업이 Windows 런타임 IAsyncInfo 인터페이스의 래핑을 해제하는지 여부 또는 그러한 작업의 하위 작업인지 여부를 확인합니다.
is_done 작업 완료 여부를 확인합니다.
스케줄러 이 작업에 대해 스케줄러를 반환합니다.
다음 오버로드됨. 이 작업에 연속 작업을 추가합니다.
wait 이 작업이 종료 상태에 도달할 때까지 기다립니다. wait은 작업 종속성을 모두 만족하며 백그라운드 작업자에 의해 이미 선택되지 않은 경우 작업을 인라인 실행할 수 있습니다.

Public 연산자

이름 설명
operator!= 오버로드됨. 두 task 개체가 서로 다른 내부 작업을 나타내는지 여부를 확인합니다.
operator= 오버로드됨. 하나의 task 개체 콘텐츠를 다른 개체 콘텐츠로 바꿉니다.
연산자== 오버로드됨. 두 task 개체가 동일한 내부 작업을 나타내는지 여부를 확인합니다.

설명

자세한 내용은 작업 병렬 처리를 참조하세요.

상속 계층 구조

task

요구 사항

헤더: ppltasks.h

네임스페이스: 동시성

get

이 작업으로 생성된 결과를 반환합니다. 작업이 종료 상태가 아닐 경우 get에 대한 호출은 작업이 끝날 때까지 대기합니다. 이 메서드는 result_typevoid을 사용하는 작업에서 호출될 때는 값을 반환하지 않습니다.

_ResultType get() const;

void get() const;

Return Value

작업의 결과입니다.

설명

작업이 취소되면 호출이 get task_canceled 예외를 throw합니다. 작업에서 다른 예외가 발생하거나 예외가 선행 작업에서 전파된 경우 get에 대한 호출은 해당 예외를 throw합니다.

Important

UWP(유니버설 Windows 플랫폼) 앱에서는 사용자 인터페이스 스레드에서 실행되는 코드에서 동시성::task::wait 또는 (호출)를 호출get하지 않습니다. waitget 그렇지 않으면 이러한 메서드가 현재 스레드를 차단하고 앱이 응답하지 않게 될 수 있으므로 런타임에서 동시성::invalid_operation throw합니다. 그러나 결과를 즉시 사용할 수 있으므로 메서드를 호출 get 하여 작업 기반 연속 작업에서 선행 작업의 결과를 받을 수 있습니다.

is_apartment_aware

작업이 Windows 런타임 IAsyncInfo 인터페이스의 래핑을 해제하는지 여부 또는 그러한 작업의 하위 작업인지 여부를 확인합니다.

bool is_apartment_aware() const;

Return Value

true 태스크가 인터페이스를 IAsyncInfo 래프 해제하거나 이러한 작업 false 에서 내림차순이면 그렇지 않습니다.

task::is_done 메서드(동시성 런타임)

작업 완료 여부를 확인합니다.

bool is_done() const;

Return Value

작업이 완료되면 True이고, 그렇지 않으면 false입니다.

설명

작업이 완료되거나 취소되면(사용자 예외 포함 또는 제외) 함수는 true를 반환합니다.

operator!=

task 개체가 서로 다른 내부 작업을 나타내는지 여부를 확인합니다.

bool operator!= (const task<_ResultType>& _Rhs) const;

bool operator!= (const task<void>& _Rhs) const;

매개 변수

_Rhs
비교할 작업입니다.

Return Value

true 개체가 다른 기본 작업을 참조하면 이고 false , 그렇지 않으면 입니다.

operator=

하나의 task 개체 콘텐츠를 다른 개체 콘텐츠로 바꿉니다.

task& operator= (const task& _Other);

task& operator= (task&& _Other);

매개 변수

_Other
원본 task 개체입니다.

Return Value

설명

task가 스마트 포인터와 같이 작동할 경우, 복사 할당 후 이 task 개체는 _Other와 동일한 실제 작업을 나타냅니다.

연산자==

task 개체가 동일한 내부 작업을 나타내는지 여부를 확인합니다.

bool operator== (const task<_ResultType>& _Rhs) const;

bool operator== (const task<void>& _Rhs) const;

매개 변수

_Rhs
비교할 작업입니다.

Return Value

true 개체가 동일한 기본 작업을 참조하면 이고 false , 그렇지 않으면 입니다.

task::scheduler 메서드(동시성 런타임)

이 작업에 대해 스케줄러를 반환합니다.

scheduler_ptr scheduler() const;

Return Value

스케줄러에 대한 포인터

task

task 개체를 생성합니다.

task();

template<typename T>
__declspec(
    noinline) explicit task(T _Param);

template<typename T>
__declspec(
    noinline) explicit task(T _Param, const task_options& _TaskOptions);

task(
    const task& _Other);

task(
    task&& _Other);

매개 변수

T
작업이 생성되는 매개 변수 형식입니다.

_Param
작업이 생성되는 매개 변수입니다. Windows 런타임 앱에서 작업을 사용하는 경우 람다, 함수 개체, task_completion_event<result_type> 개체 또는 Windows::Foundation::IAsyncInfo일 수 있습니다. 람다 또는 함수 개체는 X가 형식의 변수이거나 Windows 런타임 앱의 Windows::Foundation::IAsyncInfo일 수 있는 형식result_typetask<result_type>과 같std::function<X(void)>아야 합니다.

_TaskOptions
작업 옵션에는 취소 토큰, 스케줄러 등이 포함됩니다.

_Other
원본 task 개체입니다.

설명

task에 대한 기본 생성자는 컨테이너 내에서 사용할 수 있는 작업을 허용하기 위해서만 존재합니다. 유효한 작업을 할당할 때까지 기본 생성 작업을 사용할 수 없습니다. 기본 생성 태스크에서 호출될 때 invalid_argument 예외를 throw하거나 then 같은 getwait 메서드를 throw합니다.

task_completion_event에서 만든 작업은 작업 완료 이벤트가 설정되면 완료됩니다(연속 실행되도록 예약되어 있음).

취소 토큰을 사용하는 생성자의 버전은 이 토큰을 가져온 cancellation_token_source를 사용하여 취소할 수 있는 작업을 만듭니다. 취소 토큰 없이 만든 작업은 취소할 수 없습니다.

Windows::Foundation::IAsyncInfo 인터페이스에서 생성되었거나 IAsyncInfo 인터페이스를 반환하는 람다에서 생성된 작업은 포함된 Windows 런타임 비동기 작업 또는 동작이 완료될 때 종료 상태에 도달합니다. 마찬가지로 내부 태스크가 람다를 반환 task<result_type> 할 때가 아니라 터미널 상태에 도달할 때 터미널 상태에 도달하는 람다에서 만든 태스크입니다.

task는 스마트 포인터처럼 작동하고 값으로 안전하게 전달됩니다. 또한 잠글 필요 없이 여러 스레드에서 액세스할 수 있습니다.

Windows::Foundation::IAsyncInfo 인터페이스 또는 이러한 인터페이스를 반환하는 람다를 사용하는 생성자 오버로드는 Windows 런타임 앱에서만 사용할 수 있습니다.

자세한 내용은 작업 병렬 처리를 참조하세요.

다음으로

이 작업에 연속 작업을 추가합니다.

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func) const -> typename details::_ContinuationTypeTraits<_Function,
    _ResultType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    const task_options& _TaskOptions) const -> typename details::_ContinuationTypeTraits<_Function,
    _ResultType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    cancellation_token _CancellationToken,
    task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
    _ResultType>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    const task_options& _TaskOptions = task_options()) const -> typename details::_ContinuationTypeTraits<_Function,
    void>::_TaskOfType;

template<typename _Function>
__declspec(
    noinline) auto then(const _Function& _Func,
    cancellation_token _CancellationToken,
    task_continuation_context _ContinuationContext) const -> typename details::_ContinuationTypeTraits<_Function,
    void>::_TaskOfType;

매개 변수

_함수
이 작업으로 호출될 함수 개체의 형식입니다.

_Func
이 작업이 완료될 때 실행되는 연속 함수입니다. 이 연속 함수는 result_type 또는 task<result_type>을 입력 변수로 사용해야 하며, 여기서 result_type은 이 작업에서 생성하는 결과의 형식입니다.

_TaskOptions
작업 옵션에는 취소 토큰, 스케줄러 및 연속 컨텍스트가 포함됩니다. 기본적으로 앞의 세 가지 옵션은 선행 작업에서 상속됩니다.

_CancellationToken
연속 작업에 연결할 취소 토큰입니다. 취소 토큰 없이 만든 연속 작업은 선행 작업의 토큰을 상속합니다.

_ContinuationContext
연속이 실행되어야 하는 위치를 지정하는 변수입니다. 이 변수는 UWP 앱에서 사용할 때만 유용합니다. 자세한 내용은 task_continuation_context 참조 하세요.

Return Value

새로 만든 연속 작업입니다. 반환된 작업의 결과 형식은 _Func가 반환하는 것에 따라 결정됩니다.

설명

Windows::Foundation::IAsyncInfo 인터페이스를 반환하는 람다 또는 펀터를 사용하는 오버로드는 then Windows 런타임 앱에서만 사용할 수 있습니다.

작업 연속 작업을 사용하여 비동기 작업을 작성하는 방법에 대한 자세한 내용은 작업 병렬 처리를 참조하세요.

wait

이 작업이 종료 상태에 도달할 때까지 기다립니다. wait은 작업 종속성을 모두 만족하며 백그라운드 작업자에 의해 이미 선택되지 않은 경우 작업을 인라인 실행할 수 있습니다.

task_status wait() const;

Return Value

task_status 또는 completed가 될 수 있는 canceled 값입니다. 작업 실행 중에 예외가 발생하거나 예외가 선행 작업에서 전파된 경우 wait은 해당 예외를 throw합니다.

설명

Important

UWP(유니버설 Windows 플랫폼) 앱에서는 사용자 인터페이스 스레드에서 실행되는 코드를 호출 wait 하지 마세요. 호출하는 경우 이 메서드가 현재 스레드를 차단하고 앱이 응답하지 않게 만들 수 있기 때문에 런타임에서 concurrency::invalid_operation 을 throw합니다. 그러나 concurrency::task::get 메서드를 호출하여 작업 기반 연속에서 선행 작업의 결과를 받을 수 있습니다.

참고 항목

concurrency 네임스페이스