| 36 | } |
| 37 | |
| 38 | IMemoryPool *PoolManager::lock_pool() |
| 39 | { |
| 40 | ARM_COMPUTE_ERROR_ON_MSG(_free_pools.empty() && _occupied_pools.empty(), "Haven't setup any pools!"); |
| 41 | |
| 42 | _sem->wait(); |
| 43 | arm_compute::lock_guard<arm_compute::Mutex> lock(_mtx); |
| 44 | ARM_COMPUTE_ERROR_ON_MSG(_free_pools.empty(), "Empty pool must exist as semaphore has been signalled"); |
| 45 | _occupied_pools.splice(std::begin(_occupied_pools), _free_pools, std::begin(_free_pools)); |
| 46 | return _occupied_pools.front().get(); |
| 47 | } |
| 48 | |
| 49 | void PoolManager::unlock_pool(IMemoryPool *pool) |
| 50 | { |