execution_policy_tag_t

execution_policy_tag_t (실행 정책 타입)

병렬 알고리즘의 실행 방식을 나타내는 실행 정책 타입(class)들을 정의하는 페이지예요. <execution> 헤더, C++17부터.

출처: cppreference

본문

네 가지 실행 정책 타입이 있어요.

class sequenced_policy { /* unspecified */ };              // (1)
class parallel_policy { /* unspecified */ };               // (2)
class parallel_unsequenced_policy { /* unspecified */ };   // (3)
class unsequenced_policy { /* unspecified */ };            // (4) C++20
    1. sequenced_policy: 병렬 알고리즘 오버로딩을 구분하는 고유 타입으로 쓰이며, 알고리즘 실행이 순차(sequenced) 방식으로만 허용돼요.
    1. parallel_policy: 병렬 실행을 허용해요.
    1. parallel_unsequenced_policy: 병렬 + 비순차 실행을 허용해요.
    1. unsequenced_policy: 순차이지만 비순차 실행을 허용해요.

각 정책 타입은 해당 알고리즘에 대해 "구현이 그 방식을 따른다"는 요구사항을 부여해요. 예를 들어 parallel_policy를 받은 알고리즘은 보통 여러 스레드로 나뉘어 실행될 수 있고, unsequenced_policy는 벡터화가 가능하되 그만큼 호출 함수의 제약(데이터 경쟁 금지 등)이 강해져요.

타입 자체는 오버로드 해석을 위해 고유 타입으로 존재하고, 실제 사용은 std::execution::par 같은 인라인 상수 객체(execution_policy_tag 참고)를 알고리즘 첫 인자로 넘기는 방식이에요.

더 알아보기 (Learn more)

cppreference