Lines Matching defs:task
23 static void DelayTaskCb(void* task)
25 static_cast<QueueTask*>(task)->Execute();
33 int ConcurrentQueue::Push(QueueTask* task)
36 FFRT_COND_DO_ERR(isExit_, return FAILED, "cannot push task, [queueId=%u] is exiting", queueId_);
37 if (task->GetPriority() > ffrt_queue_priority_idle) {
38 task->SetPriority(ffrt_queue_priority_low);
42 if (task->GetDelay() == 0) {
43 whenMap_.insert({task->GetUptime(), task});
47 return PushDelayTaskToTimer(task);
49 FFRT_COND_DO_ERR(IsOnLoop(), return FAILED, "cannot push task, [queueId=%u] loop empty", queueId_);
53 FFRT_LOGD("task [gid=%llu] concurrency[%u] + 1 [queueId=%u]", task->gid, oldValue, queueId_);
55 if (task->GetDelay() > 0) {
56 whenMap_.insert({task->GetUptime(), task});
62 whenMap_.insert({task->GetUptime(), task});
63 if (task == whenMap_.begin()->second) {
73 // wait for delay task
92 int oldValue = concurrency_.fetch_sub(1); // 取不到后继的task,当前这个task正式退出
96 FFRT_COND_DO_ERR(isExit_, return nullptr, "cannot pull task, [queueId=%u] is exiting", queueId_);
98 // dequeue next expired task by priority
133 int ConcurrentQueue::PushDelayTaskToTimer(QueueTask* task)
135 uint64_t delayMs = (task->GetDelay() - 1) / 1000 + 1;
137 if (loop_->TimerStart(timeout, task, DelayTaskCb, false) < 0) {
138 FFRT_LOGE("push delay queue task to timer fail");