mirror of
https://gitee.com/openharmony/commonlibrary_ets_utils
synced 2025-02-21 10:41:36 +00:00
!1416 set posttask priority by taskpool.execute(task, priority) 挑单 5.0release
Merge pull request !1416 from wangzhaoyong/cp0910
This commit is contained in:
commit
4c43fa951a
@ -54,6 +54,15 @@ static constexpr uint32_t TRIGGER_INTERVAL = 30000; // 30000: 30s
|
||||
static constexpr uint32_t SHRINK_STEP = 4; // 4: try to release 4 threads every time
|
||||
[[maybe_unused]] static constexpr uint32_t IDLE_THRESHOLD = 2; // 2: 2 intervals later will release the thread
|
||||
|
||||
#if defined(ENABLE_TASKPOOL_EVENTHANDLER)
|
||||
static const std::map<Priority, OHOS::AppExecFwk::EventQueue::Priority> TASK_EVENTHANDLER_PRIORITY_MAP = {
|
||||
{Priority::IDLE, OHOS::AppExecFwk::EventQueue::Priority::IDLE},
|
||||
{Priority::LOW, OHOS::AppExecFwk::EventQueue::Priority::LOW},
|
||||
{Priority::MEDIUM, OHOS::AppExecFwk::EventQueue::Priority::HIGH},
|
||||
{Priority::HIGH, OHOS::AppExecFwk::EventQueue::Priority::IMMEDIATE},
|
||||
};
|
||||
#endif
|
||||
|
||||
// ----------------------------------- TaskManager ----------------------------------------
|
||||
TaskManager& TaskManager::GetInstance()
|
||||
{
|
||||
@ -942,7 +951,7 @@ napi_value TaskManager::NotifyCallbackExecute(napi_env env, TaskResultInfo* resu
|
||||
auto onCallbackTask = [callbackInfo]() {
|
||||
TaskPool::ExecuteCallbackTask(callbackInfo.get());
|
||||
};
|
||||
TaskManager::GetInstance().PostTask(onCallbackTask, "TaskPoolOnCallbackTask");
|
||||
TaskManager::GetInstance().PostTask(onCallbackTask, "TaskPoolOnCallbackTask", worker->priority_);
|
||||
} else {
|
||||
callbackInfo->onCallbackSignal->data = callbackInfo.get();
|
||||
uv_async_send(callbackInfo->onCallbackSignal);
|
||||
@ -1393,9 +1402,9 @@ void TaskManager::UpdateSystemAppFlag()
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_TASKPOOL_EVENTHANDLER)
|
||||
bool TaskManager::PostTask(std::function<void()> task, const char* taskName)
|
||||
bool TaskManager::PostTask(std::function<void()> task, const char* taskName, Priority priority)
|
||||
{
|
||||
bool res = mainThreadHandler_->PostTask(task, taskName, 0, OHOS::AppExecFwk::EventQueue::Priority::IMMEDIATE);
|
||||
bool res = mainThreadHandler_->PostTask(task, taskName, 0, TASK_EVENTHANDLER_PRIORITY_MAP.at(priority));
|
||||
if (!res) {
|
||||
HILOG_ERROR("taskpool:: the mainThread EventHandler postTask failed");
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ public:
|
||||
void RemoveDependentTaskInfo(uint64_t dependentTaskId, uint64_t taskId);
|
||||
std::string GetTaskDependInfoToString(uint64_t taskId);
|
||||
|
||||
bool PostTask(std::function<void()> task, const char* taskName);
|
||||
bool PostTask(std::function<void()> task, const char* taskName, Priority priority = Priority::DEFAULT);
|
||||
|
||||
// for duration
|
||||
void StoreTaskDuration(uint64_t taskId, uint64_t totalDuration, uint64_t cpuDuration);
|
||||
|
@ -430,7 +430,7 @@ void Worker::PerformTask(const uv_async_t* req)
|
||||
}
|
||||
Task::StartExecutionTask(task->onStartExecutionCallBackInfo_);
|
||||
};
|
||||
TaskManager::GetInstance().PostTask(onStartExecutionTask, "TaskPoolOnStartExecutionTask");
|
||||
TaskManager::GetInstance().PostTask(onStartExecutionTask, "TaskPoolOnStartExecutionTask", taskInfo.second);
|
||||
} else if (task->onStartExecutionSignal_ != nullptr) {
|
||||
uv_async_send(task->onStartExecutionSignal_);
|
||||
}
|
||||
@ -496,7 +496,7 @@ void Worker::NotifyHandleTaskResult(Task* task)
|
||||
}
|
||||
TaskPool::HandleTaskResultCallback(task);
|
||||
};
|
||||
TaskManager::GetInstance().PostTask(onResultTask, "TaskPoolOnResultTask");
|
||||
TaskManager::GetInstance().PostTask(onResultTask, "TaskPoolOnResultTask", worker->priority_);
|
||||
} else {
|
||||
uv_async_send(task->onResultSignal_);
|
||||
}
|
||||
|
@ -1842,7 +1842,7 @@ void Worker::PostWorkerOverTask()
|
||||
OHOS::AppExecFwk::EventRunner::GetMainEventRunner());
|
||||
}
|
||||
g_mainThreadHandler->PostTask(hostOnOverSignalTask, "WorkerHostOnOverSignalTask",
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::IMMEDIATE);
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::HIGH);
|
||||
}
|
||||
|
||||
void Worker::PostWorkerErrorTask()
|
||||
@ -1861,7 +1861,7 @@ void Worker::PostWorkerErrorTask()
|
||||
OHOS::AppExecFwk::EventRunner::GetMainEventRunner());
|
||||
}
|
||||
g_mainThreadHandler->PostTask(hostOnErrorTask, "WorkerHostOnErrorTask",
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::IMMEDIATE);
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::HIGH);
|
||||
}
|
||||
|
||||
void Worker::PostWorkerMessageTask()
|
||||
@ -1879,7 +1879,7 @@ void Worker::PostWorkerMessageTask()
|
||||
OHOS::AppExecFwk::EventRunner::GetMainEventRunner());
|
||||
}
|
||||
g_mainThreadHandler->PostTask(hostOnMessageTask, "WorkerHostOnMessageTask",
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::IMMEDIATE);
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::HIGH);
|
||||
}
|
||||
|
||||
void Worker::PostWorkerGlobalCallTask()
|
||||
@ -1897,7 +1897,7 @@ void Worker::PostWorkerGlobalCallTask()
|
||||
OHOS::AppExecFwk::EventRunner::GetMainEventRunner());
|
||||
}
|
||||
g_mainThreadHandler->PostTask(hostOnGlobalCallTask, "WorkerHostOnGlobalCallTask",
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::IMMEDIATE);
|
||||
0, OHOS::AppExecFwk::EventQueue::Priority::HIGH);
|
||||
}
|
||||
|
||||
bool Worker::IsValidWorker(Worker* worker)
|
||||
|
Loading…
x
Reference in New Issue
Block a user