MCPcopy Create free account
hub / github.com/alibaba/proxima / execute_tasks

Method execute_tasks

src/query/executor/parallel_executor.cc:42–67  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

40}
41
42int ParallelExecutor::execute_tasks(const TaskPtrList &tasks) {
43 int code = 0;
44 if (tasks.empty()) {
45 return code;
46 }
47
48 auto iter = tasks.begin();
49 // Keep the head task, schedule others to other coroutines
50 while (++iter != tasks.end()) {
51 code = scheduler_->schedule(*iter);
52 // Break loop, if schedule task failed,handle schedule error in
53 // wait_finish function
54 if (code != 0) {
55 LOG_ERROR("Can't schedule task to run. code[%d]", code);
56 break;
57 }
58 }
59
60 // Execute first task in queue, if all others have been scheduled
61 if (code == 0) {
62 execute_task(*tasks.begin());
63 }
64
65 // Ignore return code of first task, wait finished event for all tasks.
66 return wait_finish(tasks);
67}
68
69int ParallelExecutor::wait_finish(const TaskPtrList &tasks) {
70 int error_code = 0;

Callers 3

evaluateMethod · 0.80
evaluateMethod · 0.80
TESTFunction · 0.80

Calls 4

scheduleMethod · 0.80
emptyMethod · 0.45
beginMethod · 0.45
endMethod · 0.45

Tested by 1

TESTFunction · 0.64