다음을 통해 공유


parallel_buffered_sort 함수

비 내림차순 순서 또는 이진 조건자에 의해 지정된 순서 기준(병렬)에 따라 지정된 된 범위에 있는 요소를 정렬 합니다. 이 함수는 O(n) 추가 공간이 필요하다는 점을 제외하면 std::sort 와 비교 기반, 불안정, 내부 정렬인 점에서 의미적으로 유사하고, 기본적으로 요소들의 정렬, 기본 초기화를 필요로 합니다.

template<
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Allocator,
   typename _Random_iterator
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End
);

template<
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

template<
   typename _Allocator,
   typename _Random_iterator,
   typename _Function
>
inline void parallel_buffered_sort(
   const _Allocator& _Alloc,
   const _Random_iterator &_Begin,
   const _Random_iterator &_End,
   const _Function &_Func,
   const size_t _Chunk_size = 2048
);

매개 변수

  • _Random_iterator
    입력 범위의 반복기 형식입니다.

  • _Allocator
    STL의 종류는 호환 메모리 할당자입니다.

  • _Function
    이진 비교의 형식입니다.

  • _Begin
    저장할 범위에 있는 첫 번째 요소의 위치를 가리키는 임의 접근 반복기입니다.

  • _End
    저장할 범위에 있는 마지막 요소의 하나 뒤 위치를 가리키는 임의 접근 반복기입니다.

  • _Alloc
    STL 호환 메모리 할당자의 인스턴스입니다.

  • _Func
    연속된 요소 순서에 의해 충족 되도록 비교 조건을 정의하는 조건자 함수의 사용자 정의 개체입니다. 이진 조건자는 두 개의 인수를 사용하고 만족할 때는 truefalse를 만족하지 못할 때는 를 반환합니다. 이 비교 함수는 엄격한 순서는 시퀀스의 요소 쌍에 적용해야 합니다.

  • _Chunk_size
    병렬 실행을 위한 두 개로 분할된 청크의 최소 크기입니다.

설명

모든 오버 로드는 n * sizeof(T) 추가 공간이 필요합니다. n 은 정렬할 요소의 수이고 T 는 요소 형식입니다. 대부분의 경우에서 parallel_buffered_sort은 성능에서 parallel_sort통한 향상을 보여줍니다, 사용 가능한 메모리가 있을 경우 parallel_sort를 통해 사용해야 합니다.

이진 비교를 지정 하지 않은 경우 std::less 는 기본값으로 사용합니다. 이는 operator<() 을 제공하는 요소 형식이 필요합니다.

할당자 형식 또는 인스턴스가 지정되지 않은 경우, std::allocator<T> 가 버퍼를 할당 하는 데 사용됩니다.

알고리즘은 입력된 범위의 두 조각으로 나누고 연속적으로 각 청크 병렬에서 실행을 위해 두 개의 하위 청크로 나눕니다. 선택적 인수 _Chunk_size 는 직렬로 < _Chunk_size 크기의 청크를 처리하는 알고리즘을 나타내는데 사용할 수 있습니다.

요구 사항

헤더: ppl.h

네임스페이스: 동시성

참고 항목

참조

동시성 네임스페이스