| 27 | } |
| 28 | |
| 29 | void IOThread::shutdown() { |
| 30 | _abort = true; |
| 31 | for (std::vector<IOWorker*>::iterator it = _workers.begin(); it != _workers.end(); ++it) { |
| 32 | (*it)->abort(); |
| 33 | while ((*it)->isRunning()) { |
| 34 | _condition.wakeOne(); |
| 35 | } |
| 36 | delete (*it); |
| 37 | } |
| 38 | _workers.clear(); |
| 39 | } |
| 40 | |
| 41 | void IOThread::onBackgroundChannelChanged(int channel) { |
| 42 | _jobListMutex.lock(); |