|
|
|
@ -296,7 +296,13 @@ Status TaskGroup::CreateAsyncTask(const std::string &my_name, const std::functio
|
|
|
|
|
return Status::OK();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void TaskGroup::interrupt_all() noexcept { intrp_svc_->InterruptAll(); }
|
|
|
|
|
void TaskGroup::interrupt_all() noexcept {
|
|
|
|
|
// There is a racing condition if we don't stop the interrupt service at this point. New resource
|
|
|
|
|
// may come in and not being picked up after we call InterruptAll(). So stop new comers and then
|
|
|
|
|
// interrupt any existing resources.
|
|
|
|
|
(void)intrp_svc_->ServiceStop();
|
|
|
|
|
intrp_svc_->InterruptAll();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Status TaskGroup::join_all(Task::WaitFlag wf) {
|
|
|
|
|
Status rc;
|
|
|
|
@ -312,7 +318,6 @@ Status TaskGroup::join_all(Task::WaitFlag wf) {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Status TaskGroup::DoServiceStop() {
|
|
|
|
|
intrp_svc_->ServiceStop();
|
|
|
|
|
interrupt_all();
|
|
|
|
|
return (join_all(Task::WaitFlag::kNonBlocking));
|
|
|
|
|
}
|
|
|
|
|