| 139 | } |
| 140 | // |
| 141 | void CWizThreadPool::addTask(IWizRunable* task) |
| 142 | { |
| 143 | QMutexLocker lock(&m_cs); |
| 144 | // |
| 145 | QString strTaskId = task->getTaskID(); |
| 146 | if (!strTaskId.isEmpty()) |
| 147 | { |
| 148 | //remove exists tasks |
| 149 | intptr_t count = m_tasks.size(); |
| 150 | for (intptr_t i = count - 1; i >= 0; i--) |
| 151 | { |
| 152 | IWizRunable* t = m_tasks[i]; |
| 153 | if (t->getTaskID() == strTaskId) |
| 154 | { |
| 155 | m_tasks.erase(m_tasks.begin() + i); |
| 156 | } |
| 157 | } |
| 158 | } |
| 159 | // |
| 160 | m_tasks.push_back(task); |
| 161 | // |
| 162 | lock.unlock(); |
| 163 | // |
| 164 | QMutexLocker lockEvent(&m_csEvent); |
| 165 | m_event.wakeAll(); |
| 166 | } |
| 167 | |
| 168 | void CWizThreadPool::clearTasks() |
| 169 | { |