make first heaps algorithm-aware

This commit is contained in:
Michael Krasnyk
2017-03-31 21:53:39 +02:00
parent 3fc0fc65f9
commit d66cc125aa
6 changed files with 92 additions and 54 deletions
+31 -6
View File
@@ -3,7 +3,7 @@
#include <boost/thread/tss.hpp>
#include "partition/multi_level_partition.hpp"
#include "engine/algorithm.hpp"
#include "util/binary_heap.hpp"
#include "util/typedefs.hpp"
@@ -53,25 +53,50 @@ struct SearchEngineData
using MultiLayerDijkstraHeapPtr = boost::thread_specific_ptr<MultiLayerDijkstraHeap>;
private:
static SearchEngineHeapPtr forward_heap_1;
static SearchEngineHeapPtr reverse_heap_1;
static MultiLayerDijkstraHeapPtr mld_forward_heap;
static MultiLayerDijkstraHeapPtr mld_reverse_heap;
public:
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 MultiLayerDijkstraHeapPtr mld_forward_heap;
static MultiLayerDijkstraHeapPtr mld_reverse_heap;
void InitializeOrClearFirstThreadLocalStorage(const unsigned number_of_nodes);
template <typename Algorithm>
void InitializeOrClearFirstThreadLocalStorage(Algorithm, const unsigned number_of_nodes);
template <typename Algorithm> auto GetForwardHeapPtr(Algorithm) const
{
return forward_heap_1.get();
}
template <typename Algorithm> auto GetReverseHeapPtr(Algorithm) const
{
return reverse_heap_1.get();
}
void InitializeOrClearFirstThreadLocalStorage(routing_algorithms::mld::Algorithm,
const unsigned number_of_nodes);
auto GetForwardHeapPtr(routing_algorithms::mld::Algorithm) const
{
return mld_forward_heap.get();
}
auto GetReverseHeapPtr(routing_algorithms::mld::Algorithm) const
{
return mld_reverse_heap.get();
}
void InitializeOrClearSecondThreadLocalStorage(const unsigned number_of_nodes);
void InitializeOrClearThirdThreadLocalStorage(const unsigned number_of_nodes);
void InitializeOrClearManyToManyThreadLocalStorage(const unsigned number_of_nodes);
void InitializeOrClearMultiLayerDijkstraThreadLocalStorage(const unsigned number_of_nodes);
};
}
}