| 161 | } |
| 162 | |
| 163 | IRequestRef Next() override { |
| 164 | TGuard<TMutex> g(M_); |
| 165 | |
| 166 | while (Q_.empty()) { |
| 167 | C_.Wait(M_); |
| 168 | } |
| 169 | |
| 170 | IRequestRef ret = *Q_.begin(); |
| 171 | Q_.pop_front(); |
| 172 | |
| 173 | return ret; |
| 174 | } |
| 175 | |
| 176 | private: |
| 177 | TDeque<IRequestRef> Q_; |