Hello!

I am reading the use of TaskScheduler inside C++ compute code (reading hash
join) and have some questions about it, in particular:

(1) What the purpose of SchedulerTaskCallback defined here:
https://github.com/apache/arrow/blob/5a5d92928ccd438edf7ced8eae449fad05a7e71f/cpp/src/arrow/compute/exec/hash_join_node.cc#L428
(My guess is that the caller of TaskScheduler::StartTaskGroup needs to
provide an implementation of a task executor, and the implementation of
SchedulerTaskCallback inside hash_join_node.cc is just a vanillar
implementation)

(2) When would this task context not have an executor?
https://github.com/apache/arrow/blob/master/cpp/src/arrow/compute/exec/hash_join_node.cc#L581

(3) What's the difference between TaskImpl and TaskGroupContinuationImpl in
TaskScheduler::RegisterTaskGroup? And how would one normally define
TaskGroupContinuationImpl?

Sorry I am still learning the Arrow compute internals and appreciate help
on understanding these.

Li

Reply via email to