필자는 반복자를 사용하고 각 (키, 값) 쌍을 검사하면서 전체 tbb 동시 해시 맵을 탐색 중입니다.Tbb 동시 해시 맵 반복자
for (MAP::pair = myHashTable.begin(); myHashTable.end(); pair++)
이 반복기는 어떻게 병렬 처리 할 수 있습니까? Reference Manual에 설명되어
필자는 반복자를 사용하고 각 (키, 값) 쌍을 검사하면서 전체 tbb 동시 해시 맵을 탐색 중입니다.Tbb 동시 해시 맵 반복자
for (MAP::pair = myHashTable.begin(); myHashTable.end(); pair++)
이 반복기는 어떻게 병렬 처리 할 수 있습니까? Reference Manual에 설명되어
사용 range()
방법 :
HashTable_t myHashTable; // assuming HashTable_t is concurrent_hash_map specialization
tbb::parallel_for(myHashTable.range(), [](const HashTable_t::range_type &r) {
for(HashTable_t::iterator i = r.begin(); i != r.end(); i++);
});
(나는 간결을 위해 c++11 사용하지만 c++03의 이익을 위해 명시 적으로 유형을 보여)
그리고 거기에주의 노트에주의하시기 바랍니다 :
테이블을 반복하는 동안 count 및 find를 포함하여 동시 작업을 호출하지 마십시오. 동시 탐색 및 삽입이 필요한 경우에는 concurrent_unordered_map을 사용하십시오.
예제를 추가해 주실 수 있습니까? 그래서 예. 당신은() 연산자를 구현하지만 무엇을 작성해야합니까? void operator() (const tbb :: blocked_range
감사합니다, 대답을 개선했습니다 – Anton
감사합니다! HashTable_t :: range_type을 작성하지 않았습니다. –
실례합니다. 질문에 답변 했습니까? :) – Anton
잘 다음에 나는 stackoverflow를 우회하고, 갈 사람을 알아! :) – NewToAndroid