| 204 | |
| 205 | template <typename TaskType> |
| 206 | std::unique_ptr<TaskType> Batch<TaskType>::RemoveTask() { |
| 207 | { |
| 208 | mutex_lock l(mu_); |
| 209 | if (tasks_.empty()) { |
| 210 | return nullptr; |
| 211 | } |
| 212 | std::unique_ptr<TaskType> task = std::move(tasks_.back()); |
| 213 | size_ -= task->size(); |
| 214 | tasks_.pop_back(); |
| 215 | return task; |
| 216 | } |
| 217 | } |
| 218 | |
| 219 | template <typename TaskType> |
| 220 | int Batch<TaskType>::num_tasks() const { |