Lines Matching refs:task
37 HILOG_DEBUG("taskpool:: reset worker priority to match task priority");
154 auto task = std::move(worker->debuggerQueue_.front());
157 task();
160 void Worker::DebuggerOnPostTask(std::function<void()>&& task)
165 debuggerQueue_.push(std::move(task));
241 // Init worker task execute signal
248 // Init debugger task post signal
274 workerEngine->SetDebuggerPostTaskFunc([this](std::function<void()>&& task) {
275 this->DebuggerOnPostTask(std::move(task));
394 Task* task = TaskManager::GetInstance().GetTask(taskInfo.first);
395 if (task == nullptr) {
396 HILOG_DEBUG("taskpool:: task has been released");
398 } else if (!task->IsValid() && task->ShouldDeleteTask(false)) {
399 HILOG_WARN("taskpool:: task is invalid");
400 delete task;
406 if (!task->UpdateTask(startTime, worker)) {
410 if (task->IsGroupTask() && (!TaskGroupManager::GetInstance().UpdateGroupState(task->groupId_))) {
413 if (task->IsLongTask()) {
414 worker->UpdateLongTaskInfo(task);
416 worker->StoreTaskId(task->taskId_);
418 std::string strTrace = "Task Perform: name : " + task->name_ + ", taskId : " + std::to_string(task->taskId_)
425 napi_value errorInfo = task->DeserializeValue(env, &func, &args);
428 worker->NotifyTaskResult(env, task, errorInfo);
432 if (!worker->InitTaskPoolFunc(env, func, task)) {
442 if (!task->CheckStartExecution(taskInfo.second)) {
443 if (task->ShouldDeleteTask()) {
444 delete task;
451 task->DecreaseRefCount();
452 task->StoreTaskDuration();
454 HandleFunctionException(env, task);
457 void Worker::NotifyTaskResult(napi_env env, Task* task, napi_value result)
460 HILOG_DEBUG("taskpool:: NotifyTaskResult task:%{public}s", std::to_string(task->taskId_).c_str());
467 if ((status != napi_ok || resultData == nullptr) && task->success_) {
468 task->success_ = false;
472 NotifyTaskResult(env, task, err);
475 task->result_ = resultData;
476 NotifyHandleTaskResult(task);
479 void Worker::NotifyHandleTaskResult(Task* task)
481 if (!task->IsReadyToHandle()) {
484 Worker* worker = reinterpret_cast<Worker*>(task->worker_);
487 auto iter = std::find(worker->currentTaskId_.begin(), worker->currentTaskId_.end(), task->taskId_);
495 if (!task->VerifyAndPostResult(worker->priority_)) {
496 if (task->ShouldDeleteTask()) {
497 delete task;
514 Task* task = static_cast<Task*>(data);
515 auto taskId = reinterpret_cast<uint64_t>(task);
517 HILOG_FATAL("taskpool:: task is nullptr");
520 auto worker = static_cast<Worker*>(task->worker_);
521 worker->isExecutingLongTask_ = task->IsLongTask();
522 task->DecreaseRefCount();
523 task->ioTime_ = ConcurrentHelper::GetMilliseconds();
524 if (task->cpuTime_ != 0) {
525 uint64_t ioDuration = task->ioTime_ - task->startTime_;
526 uint64_t cpuDuration = task->cpuTime_ - task->startTime_;
527 TaskManager::GetInstance().StoreTaskDuration(task->taskId_, std::max(ioDuration, cpuDuration), cpuDuration);
529 task->success_ = success;
530 NotifyTaskResult(env, task, result);
533 // reset qos_user_initiated after perform task
556 bool Worker::InitTaskPoolFunc(napi_env env, napi_value func, Task* task)
559 bool success = workerEngine->InitTaskPoolFunc(env, func, task);
564 task->success_ = false;
566 NotifyTaskResult(env, task, errorEvent);
573 task->success_ = false;
574 NotifyTaskResult(env, task, err);
592 HILOG_DEBUG("taskpool:: TerminateTask task:%{public}s", std::to_string(taskId).c_str());
601 void Worker::UpdateLongTaskInfo(Task* task)
603 HILOG_DEBUG("taskpool:: UpdateLongTaskInfo task:%{public}s", std::to_string(task->taskId_).c_str());
604 TaskManager::GetInstance().StoreLongTaskInfo(task->taskId_, this);
608 longTasksSet_.emplace(task->taskId_);
621 void Worker::HandleFunctionException(napi_env env, Task* task)
627 task->DecreaseRefCount();
628 task->success_ = false;
630 NotifyTaskResult(env, task, errorEvent);
633 NotifyHandleTaskResult(task);