| 75 | } |
| 76 | |
| 77 | void AsyncTaskThread::run(AsyncTaskThread* self) { |
| 78 | while (true) { |
| 79 | std::unique_ptr<IAsyncTask> task; |
| 80 | { |
| 81 | std::unique_lock<std::mutex> lk(self->m); |
| 82 | self->cv.wait(lk, [self] { return !self->queue.canSleep(); }); |
| 83 | task = self->queue.pop().get(); |
| 84 | if (task->isTerminate()) { |
| 85 | return; |
| 86 | } |
| 87 | } |
| 88 | (*task)(); |
| 89 | } |
| 90 | } |
| 91 | |
| 92 | TEST_CASE("/asynctaskthread/add") { |
| 93 | state std::atomic<int> sum = 0; |
nothing calls this directly
no test coverage detected