diff --git a/include/engine/search_engine_data.hpp b/include/engine/search_engine_data.hpp index 16ffa25b1..7c885343f 100644 --- a/include/engine/search_engine_data.hpp +++ b/include/engine/search_engine_data.hpp @@ -45,19 +45,19 @@ template <> struct SearchEngineData ManyToManyHeapData, util::UnorderedMapStorage>; - using SearchEngineHeapPtr = boost::thread_specific_ptr; + using SearchEngineHeapPtr = std::unique_ptr; - using ManyToManyHeapPtr = boost::thread_specific_ptr; + using ManyToManyHeapPtr = std::unique_ptr; - static SearchEngineHeapPtr forward_heap_1; - static SearchEngineHeapPtr reverse_heap_1; - static SearchEngineHeapPtr forward_heap_2; - static SearchEngineHeapPtr reverse_heap_2; - static SearchEngineHeapPtr forward_heap_3; - static SearchEngineHeapPtr reverse_heap_3; - static ManyToManyHeapPtr many_to_many_heap; - static SearchEngineHeapPtr map_matching_forward_heap_1; - static SearchEngineHeapPtr map_matching_reverse_heap_1; + static thread_local SearchEngineHeapPtr forward_heap_1; + static thread_local SearchEngineHeapPtr reverse_heap_1; + static thread_local SearchEngineHeapPtr forward_heap_2; + static thread_local SearchEngineHeapPtr reverse_heap_2; + static thread_local SearchEngineHeapPtr forward_heap_3; + static thread_local SearchEngineHeapPtr reverse_heap_3; + static thread_local ManyToManyHeapPtr many_to_many_heap; + static thread_local SearchEngineHeapPtr map_matching_forward_heap_1; + static thread_local SearchEngineHeapPtr map_matching_reverse_heap_1; void InitializeOrClearMapMatchingThreadLocalStorage(unsigned number_of_nodes); @@ -127,16 +127,16 @@ template <> struct SearchEngineData MapMatchingMultiLayerDijkstraHeapData, util::TwoLevelStorage>; - using SearchEngineHeapPtr = boost::thread_specific_ptr; - using ManyToManyHeapPtr = boost::thread_specific_ptr; - using MapMatchingHeapPtr = boost::thread_specific_ptr; + using SearchEngineHeapPtr = std::unique_ptr; + using ManyToManyHeapPtr = std::unique_ptr; + using MapMatchingHeapPtr = std::unique_ptr; - static SearchEngineHeapPtr forward_heap_1; - static SearchEngineHeapPtr reverse_heap_1; - static MapMatchingHeapPtr map_matching_forward_heap_1; - static MapMatchingHeapPtr map_matching_reverse_heap_1; + static thread_local SearchEngineHeapPtr forward_heap_1; + static thread_local SearchEngineHeapPtr reverse_heap_1; + static thread_local MapMatchingHeapPtr map_matching_forward_heap_1; + static thread_local MapMatchingHeapPtr map_matching_reverse_heap_1; - static ManyToManyHeapPtr many_to_many_heap; + static thread_local ManyToManyHeapPtr many_to_many_heap; void InitializeOrClearFirstThreadLocalStorage(unsigned number_of_nodes, unsigned number_of_boundary_nodes); diff --git a/include/util/pool_allocator.hpp b/include/util/pool_allocator.hpp index e106c575f..7d6e03714 100644 --- a/include/util/pool_allocator.hpp +++ b/include/util/pool_allocator.hpp @@ -59,7 +59,6 @@ public: ~MemoryManager() { - // std::lock_guard lock(mutex_); for (auto block : blocks_) { std::free(block); diff --git a/src/engine/search_engine_data.cpp b/src/engine/search_engine_data.cpp index dd1a053e0..1eb497a46 100644 --- a/src/engine/search_engine_data.cpp +++ b/src/engine/search_engine_data.cpp @@ -5,16 +5,16 @@ namespace osrm::engine // CH heaps using CH = routing_algorithms::ch::Algorithm; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_1; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_1; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_2; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_2; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_3; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_3; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::map_matching_forward_heap_1; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::map_matching_reverse_heap_1; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_1; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_1; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_2; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_2; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_3; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_3; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::map_matching_forward_heap_1; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::map_matching_reverse_heap_1; -SearchEngineData::ManyToManyHeapPtr SearchEngineData::many_to_many_heap; +thread_local SearchEngineData::ManyToManyHeapPtr SearchEngineData::many_to_many_heap; void SearchEngineData::InitializeOrClearMapMatchingThreadLocalStorage(unsigned number_of_nodes) { @@ -114,11 +114,11 @@ void SearchEngineData::InitializeOrClearManyToManyThreadLocalStorage(unsigne // MLD using MLD = routing_algorithms::mld::Algorithm; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_1; -SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_1; -SearchEngineData::MapMatchingHeapPtr SearchEngineData::map_matching_forward_heap_1; -SearchEngineData::MapMatchingHeapPtr SearchEngineData::map_matching_reverse_heap_1; -SearchEngineData::ManyToManyHeapPtr SearchEngineData::many_to_many_heap; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::forward_heap_1; +thread_local SearchEngineData::SearchEngineHeapPtr SearchEngineData::reverse_heap_1; +thread_local SearchEngineData::MapMatchingHeapPtr SearchEngineData::map_matching_forward_heap_1; +thread_local SearchEngineData::MapMatchingHeapPtr SearchEngineData::map_matching_reverse_heap_1; +thread_local SearchEngineData::ManyToManyHeapPtr SearchEngineData::many_to_many_heap; void SearchEngineData::InitializeOrClearMapMatchingThreadLocalStorage( unsigned number_of_nodes, unsigned number_of_boundary_nodes)