Share via


task_group::run 메서드

task_group 개체에서 작업을 예약합니다. task_handle 개체가 매개 변수로 run에 전달되는 경우 호출자는 task_handle 개체의 수명을 관리하는 일을 담당합니다. 매개 변수로 함수 개체를 참조하는 메서드의 버전은 task_handle 개체를 참조하는 버전을 사용하는 것보다 성능이 떨어질 수 있는 런타임 내의 힙 할당을 포함합니다.

template<
   typename _Function
>
void run(
   const _Function& _Func
);
template<
   typename _Function
>
void run(
   task_handle<_Function>& _Task_handle
);

매개 변수

  • _Function
    작업 핸들의 본문을 실행하기 위해 호출되는 함수 개체의 형식입니다.

  • _Func
    작업 본문을 호출하기 위해 호출할 함수입니다. 이는 시그니처 **void operator()()**를 갖는 함수 호출 연산자의 버전을 지원하는 람다 식 또는 다른 개체일 수 있습니다.

  • _Task_handle
    예약 중인 작업에 대한 핸들입니다. 이 개체의 수명은 호출자의 책임입니다. 런타임은 wait 또는 run_and_wait 메서드가 이 task_group 개체에서 호출될 때까지 계속 존재합니다.

설명

런타임에서는 제공된 작업 함수가 이후에 실행되도록 예약합니다. 이 작업은 호출 함수가 반환된 후 가능합니다. 이 메서드는 task_handle 개체를 사용하여 제공된 작업 함수의 복사본을 저장합니다. 따라서 이 메서드에 전달하는 함수 개체에서 발생하는 모든 상태 변경은 해당 함수 개체의 복사본에 나타나지 않습니다. 또한 작업 함수에 대한 참조 또는 포인터를 통해 전달하는 모든 개체의 수명이 작업 함수가 반환될 때까지 유효한 상태로 있는지 확인합니다.

task_group이 예외에서 스택 해제의 결과로 소멸되는 경우 호출이 wait 또는 run_and_wait 메서드로 이루어지지 않도록 보장할 필요가 없습니다. 이 경우 소멸자는 적절히 취소되고 _Task_handle 매개 변수로 표현되는 작업이 완료되기를 기다립니다.

_Task_handle 매개 변수에서 제공된 작업 핸들이 이미 run 메서드를 통해 작업 그룹 개체에 예약되었고 해당 작업 그룹에 wait 또는 run_and_wait 메서드에 대한 호출 중단이 없는 경우 invalid_multiple_scheduling 예외가 throw됩니다.

요구 사항

헤더: ppl.h

네임스페이스: 동시성

참고 항목

참조

task_group 클래스

task_group::wait 메서드

개념

작업 병렬 처리(동시성 런타임)

기타 리소스

task_group::run_and_wait 메서드