(path_from_startend)라는 순서가 지정되지 않은 맵의 인구를 빠르게하는 방법이 있는지 궁금합니다. 순서가 지정되지 않은지도에는 항상 고유 한 키가 있습니다.멀티 스레딩을 사용하여 순서가 정렬되지 않은 C++ 인구
#pragma omp parallel for
for (int i=start_index;i<end_index;++i){
for (int j=start_index;j<end_index;++j){
string key= to_string(unique_locations[i])+to_string(unique_locations[j]);
//dont compute path to itself
if (i==j){
}
else {
vector <unsigned> path = pathbot.FindPath(unique_locations[i],unique_locations[j],turn_penalty);
path_from_startend.insert(make_pair(key,path));
}
}
}
'path_from_startend'는 스레드간에 공유되므로 삽입 작업은 중요한 섹션으로 이동해야합니다. 그러면 문제는'pathbot.FindPath'가 오랜 시간이 걸립니까? 그렇지 않으면 중요한 부분 때문에 맵을 순차적으로 채우고 있기 때문에 무의미합니다. –
FindPath는 약간의 시간 (밀리 초)을 소요하는 A * 알고리즘입니다. –
그러면 내 대답이 도움이 될 것입니다. 귀하의 코드와 일치하도록 업데이트했습니다. 동기화하지 않고 –