3 #include <geneial/namespaces.h>
4 #include <geneial/core/population/builder/BaseChromosomeFactory.h>
5 #include <geneial/core/population/builder/MultiValueBuilderSettings.h>
9 geneial_private_namespace(geneial)
11 geneial_private_namespace(population)
13 geneial_private_namespace(management)
16 geneial_export_namespace
28 template<
typename RESOURCE>
31 std::mutex _poolMutex;
33 std::vector<RESOURCE*> _freePool;
44 bool inline retrieve(RESOURCE* &raw_ptr)
46 std::lock_guard<std::mutex> lock(_poolMutex);
47 if (_freePool.size() > 0)
49 raw_ptr = _freePool.back();
63 void inline free(RESOURCE*&& raw_ptr)
66 std::lock_guard<std::mutex> lock(_poolMutex);
67 _freePool.emplace_back(raw_ptr);
75 return _freePool.size();
78 virtual ~ResourcePool()
81 for (
auto & ptr : _freePool)