24namespace localization {
26namespace pyramid_map {
29 unsigned int thread_size)
30 : pool_size_(pool_size) {}
38 for (
unsigned int i = 0; i <
pool_size_; ++i) {
50 FinalizeMapNode(node);
55 FinalizeMapNode(node);
68 boost::unique_lock<boost::mutex> lock(
mutex_);
88 cyber::Async(&BaseMapNodePool::FreeMapNodeTask,
this, map_node);
91void BaseMapNodePool::FreeMapNodeTask(
BaseMapNode* map_node) {
92 FinalizeMapNode(map_node);
93 ResetMapNode(map_node);
95 boost::unique_lock<boost::mutex> lock(
mutex_);
96 typename std::set<BaseMapNode*>::iterator
f =
busy_nodes_.find(map_node);
98 throw "[BaseMapNodePool::free_map_node_task] f == busy_nodes_.end()";
105void BaseMapNodePool::InitNewMapNode(BaseMapNode* node) {
109void BaseMapNodePool::FinalizeMapNode(BaseMapNode* node) {
110 if (node !=
nullptr) {
115void BaseMapNodePool::DellocMapNode(BaseMapNode* node) {
116 if (node !=
nullptr) {
121void BaseMapNodePool::ResetMapNode(BaseMapNode* node) {
122 if (node !=
nullptr) {
123 node->ResetMapNode();
The options of the reflectance map.
virtual ~BaseMapNodePool()
Destructor
bool is_fixed_size_
The flag of pool auto expand.
const BaseMapConfig * map_config_
The mutex for release thread.
BaseMapNode * AllocMapNode()
Get a MapNode object from memory pool.
void Release()
Release the pool.
std::set< BaseMapNode * > busy_nodes_
The set for used node.
BaseMapNodePool(unsigned int pool_size, unsigned int thread_size)
Constructor
boost::mutex mutex_
The mutex for release thread.
std::list< BaseMapNode * > free_list_
The list for free node.
std::future< void > node_reset_workers_
The thread pool for release node.
void FreeMapNode(BaseMapNode *map_node)
Release MapNode object to memory pool.
void Initial(const BaseMapConfig *map_config, bool is_fixed_size=true)
Initialize the pool.
unsigned int pool_size_
The size of memory pool.
The data structure of a Node in the map.