thread_launch

thread_launch (스레드 실행 정책)

std::launch는 std::async 함수가 실행하는 작업의 실행 정책을 지정하는 비트마스크 타입이에요. 이 타입은 C++11에서 도입되었으며, 작업을 별도의 스레드에서 실행할지, 아니면 결과가 요청될 때까지 지연할지를 결정해요. std::async를 사용할 때 실행 방식을 명시적으로 제어하고 싶다면 이 열거형을 활용하면 돼요.

출처: cppreference

본문

개요

std::launch는 BitmaskType 요구 사항을 만족해요. std::async 함수에 전달되어 작업이 어떻게 실행될지를 지정하는 역할을 해요.

다음은 <future> 헤더에 정의된 선언이에요.

enum class launch : /* unspecified */ { async = /* unspecified */ , deferred = /* unspecified */ , /* implementation-defined */ };

이 열거형은 C++11부터 사용할 수 있어요.

상수

표준 라이브러리는 개별 비트를 나타내는 다음 상수들을 정의해요.

열거자 의미
async 작업이 다른 스레드에서 실행돼요. 필요하다면 새 스레드를 생성하고 시작할 수도 있어요.
deferred 작업 결과가 처음 요청되는 시점에 호출 스레드에서 실행돼요. 지연 평가(lazy evaluation) 방식이에요.

추가로, 구현은 다음을 허용해요.

  • 작업 상호작용에 대한 제한을 지정하기 위해 추가 비트와 비트마스크를 정의할 수 있어요. 이때 일부 실행 정책에만 적용할 수 있어요.
  • 이러한 추가 비트마스크를 std::async의 첫 번째(기본) 오버로드에서 활성화할 수 있어요.

결함 보고

다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었어요.

DR 적용 대상 발표된 동작 올바른 동작
LWG 2102 C++11 std::launch는 구현 정의 타입이었어요. 구현 정의 타입이 아니에요.

같이 보기

async (C++11) 함수를 비동기적으로 실행하고(잠재적으로 새 스레드에서) 결과를 보관할 std::future를 반환해요. (함수 템플릿)

더 알아보기 (Learn more)

cppreference