728x90
반응형
execution::bulk_execute
대량 발신기(sender)를 생성하는 사용자 지정 지점이다.
constexpr unspecified bulk_execute = unspecified;
execution::bulk_execute 이름은 사용자 지정 지점 개체를 나타낸다. is_convertible_v<N, size_t>가 true이면, 일부 하위 표현식 S, F 및 N에 대한 execution::bulk_execute(S, F, N) 표현식은 다음과 같은 표현식이다:
- S.bulk_execute(F, N), 해당 표현식이 유효한 경우. 선택된 함수가 순방향 진행을 보장하는 boost::asio::query(S, execution::bulk_guarantee)를 사용하여 실행기(executor) S에서 함수 개체 F의 N 호출을 대량으로 실행하지 않고, 해당 함수의 결과가 sender<void>를 모델링하지 않으면, 프로그램은 진단이 필요없이 형식이 잘못된 상태가 된다.
- 그렇지 않으면 bulk_execute(S, F, N), 해당 표현식이 유효한 경우, void bulk_execute(); 선언은 포함하고 execution::bulk_execute 선언은 포함하지 않은 컨텍스트에서 오버로드 작업이 수행된다. 오버로드 작업에서 선택된 함수가 순방향 진행을 보장하는 boost::asio::query(E, execution::bulk_guarantee)를 사용하여 실행기 S에서 함수 개체 F의 N 호출을 대량으로 실행하지 않고, 해당 함수의 결과가 sender<void>를 모델링하지 않으면, 프로그램은 진단이 필요없이 형식이 잘못된 상태가 된다.
- 그렇지 않으면 F 유형과 executor_index_t<remove_cvref_t<S>> 모델이 호출 가능하고, boost::asio::query(S, execution::bulk_guarantee)가 execution::bulk_quarantee.unsequenced와 같으면
- 호출 스레드에서 DECAY_COPY(std::forward<decltype(F)>(F))를 평가하여 함수 개체 cf를 생성한다. [참고: 이후에 cf의 추가 사본을 생성할 수 있다.]
- N에서 i의 각 값에 대해 cf(i) (또는 cf의 복사본)는 i의 각 값에 대한 고유한 실행 에이전트에 의해 최대 한번 호출된다.
- 하나 이상의 cf 호출은 보류중인 완료를 블럭할 수 있다.
- cf의 호출은 (C++ Std [intro.multithread])와 동기화한다.
- 그렇지 않으면 execution::bulk_execute(S, F, N) 형식이 잘못된 상태가 된다.
요구 사항
일반 헤더: boost/asio/execution/bulk_execute.hpp
편의 헤더: boost/asio/execution.hpp
Boost.Asio 홈
728x90
반응형
'Boost C++ Libraries > Boost.Asio' 카테고리의 다른 글
Boost.Asio 색인 - execution::connect (0) | 2021.01.24 |
---|---|
Boost.Asio 색인 - execution::bulk_guarantee (0) | 2021.01.24 |
Boost.Asio 색인 - execution::blocking_adaptation (0) | 2021.01.24 |
Boost.Asio 색인 - execution::blocking (0) | 2021.01.24 |
Boost.Asio 색인 - execution::allocator (0) | 2021.01.24 |