55 std::vector<std::future<size_t>> returns;
58 using IndexedPriority = std::pair<size_t, int>;
59 std::vector<IndexedPriority> indexedKeys( aItems.size() );
60 for(
size_t i = 0; i < aItems.size(); ++i )
66 std::sort( indexedKeys.begin(), indexedKeys.end(),
67 [](
const IndexedPriority& a,
const IndexedPriority& b )
69 return a.second > b.second;
73 const size_t numItems = aItems.size();
74 for(
size_t priorityRank = 0; priorityRank < numItems; ++priorityRank )
76 const size_t itemIndex = indexedKeys[priorityRank].first;
77 ItemT& item = aItems[itemIndex];
80 const size_t priority = ( ( numItems - priorityRank - 1 ) *
m_highestPriority ) / numItems;
82 returns.emplace_back(
tp.submit_task(
90 for(
const std::future<size_t>& ret : returns )
94 while( status != std::future_status::ready )