| 267 | } |
| 268 | |
| 269 | void Pool::addWork(PoolTask *aTask) |
| 270 | { |
| 271 | if (mThreadCount == 0) |
| 272 | { |
| 273 | aTask->work(); |
| 274 | } |
| 275 | else |
| 276 | { |
| 277 | if (mWorkMutex) lockMutex(mWorkMutex); |
| 278 | if (mMaxTask == MAX_THREADPOOL_TASKS) |
| 279 | { |
| 280 | // If we're at max tasks, do the task on calling thread |
| 281 | // (we're in trouble anyway, might as well slow down adding more work) |
| 282 | if (mWorkMutex) unlockMutex(mWorkMutex); |
| 283 | aTask->work(); |
| 284 | } |
| 285 | else |
| 286 | { |
| 287 | mTaskArray[mMaxTask] = aTask; |
| 288 | mMaxTask++; |
| 289 | if (mWorkMutex) unlockMutex(mWorkMutex); |
| 290 | } |
| 291 | } |
| 292 | } |
| 293 | |
| 294 | PoolTask * Pool::getWork() |
| 295 | { |
nothing calls this directly
no test coverage detected