wangbo commented on code in PR #19924: URL: https://github.com/apache/doris/pull/19924#discussion_r1219027857
########## be/src/runtime/task_group/task_group.cpp: ########## @@ -40,50 +42,89 @@ const static std::string CPU_SHARE = "cpu_share"; const static std::string MEMORY_LIMIT = "memory_limit"; const static std::string ENABLE_MEMORY_OVERCOMMIT = "enable_memory_overcommit"; -pipeline::PipelineTask* TaskGroupEntity::take() { - if (_queue.empty()) { - return nullptr; - } - auto task = _queue.front(); - _queue.pop(); - return task; +template <typename QueueType, typename ParentQueueType> +TaskGroupEntity<QueueType, ParentQueueType>::TaskGroupEntity(taskgroup::TaskGroup* tg, + ParentQueueType* in_queue) + : _tg(tg), + _version(tg->version()), + _cpu_share(tg->cpu_share()), + _queue_contains_me(in_queue) { + _task_queue = new QueueType(); +} + +template <typename QueueType, typename ParentQueueType> +TaskGroupEntity<QueueType, ParentQueueType>::~TaskGroupEntity() { + delete _task_queue; } -void TaskGroupEntity::incr_runtime_ns(uint64_t runtime_ns) { - auto v_time = runtime_ns / _tg->cpu_share(); +template <typename QueueType, typename ParentQueueType> +QueueType* TaskGroupEntity<QueueType, ParentQueueType>::task_queue() { + return _task_queue; +} + +template <typename QueueType, typename ParentQueueType> +void TaskGroupEntity<QueueType, ParentQueueType>::incr_runtime_ns(uint64_t runtime_ns) { + auto v_time = runtime_ns / _cpu_share; _vruntime_ns += v_time; } -void TaskGroupEntity::adjust_vruntime_ns(uint64_t vruntime_ns) { +template <typename QueueType, typename ParentQueueType> +void TaskGroupEntity<QueueType, ParentQueueType>::adjust_vruntime_ns(uint64_t vruntime_ns) { VLOG_DEBUG << "adjust " << debug_string() << "vtime to " << vruntime_ns; _vruntime_ns = vruntime_ns; } -void TaskGroupEntity::push_back(pipeline::PipelineTask* task) { - _queue.emplace(task); +template <typename QueueType, typename ParentQueueType> +size_t TaskGroupEntity<QueueType, ParentQueueType>::task_size() const { + return _task_queue->size(); } -uint64_t TaskGroupEntity::cpu_share() const { - return _tg->cpu_share(); +template <typename QueueType, typename ParentQueueType> +uint64_t TaskGroupEntity<QueueType, ParentQueueType>::cpu_share() const { + return _cpu_share; Review Comment: Not need a lock here? -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org