std::unique_ptr<WorkRequest> Worker::send(Fn work, Fn after) { auto task = std::make_shared<WorkTask>(work, after); auto request = std::make_unique<WorkRequest>(task); threads[current]->invokeWithResult(&Worker::Impl::doWork, [task] { task->runAfter(); }, task); current = (current + 1) % threads.size(); return request; }
void Task_Implement::runTask() { runBeforce(); if (isUsed()){ run(); } else{ runFailed(); } runAfter(); }