| 42 | |
| 43 | template<typename WorkThreadType> |
| 44 | PoolThread* enqueue(Exception& ex, const std::shared_ptr<WorkThreadType>& pWork, PoolThread* pThread = NULL) { |
| 45 | if (!pThread) { |
| 46 | pThread = _threads.front(); |
| 47 | _threads.pop_front(); |
| 48 | _threads.emplace_back(pThread); |
| 49 | } |
| 50 | pThread->push<WorkThreadType>(ex, pWork); |
| 51 | return pThread; |
| 52 | } |
| 53 | |
| 54 | private: |
| 55 | std::deque<PoolThread*> _threads; |