| 47 | } |
| 48 | |
| 49 | void PoolManager::unlock_pool(IMemoryPool *pool) |
| 50 | { |
| 51 | ARM_COMPUTE_ERROR_ON_MSG(_free_pools.empty() && _occupied_pools.empty(), "Haven't setup any pools!"); |
| 52 | |
| 53 | arm_compute::lock_guard<arm_compute::Mutex> lock(_mtx); |
| 54 | auto it = std::find_if(std::begin(_occupied_pools), std::end(_occupied_pools), |
| 55 | [pool](const std::unique_ptr<IMemoryPool> &pool_it) { return pool_it.get() == pool; }); |
| 56 | ARM_COMPUTE_ERROR_ON_MSG(it == std::end(_occupied_pools), "Pool to be unlocked couldn't be found!"); |
| 57 | _free_pools.splice(std::begin(_free_pools), _occupied_pools, it); |
| 58 | _sem->signal(); |
| 59 | } |
| 60 | |
| 61 | void PoolManager::register_pool(std::unique_ptr<IMemoryPool> pool) |
| 62 | { |