24 m_arena(
std::make_shared<oneapi::tbb::task_arena>(oneapi::tbb::task_arena::attach())) {
29 : m_task(iTask.release_no_decrement()),
30 m_group(iTask.
group()),
31 m_arena(
std::make_shared<oneapi::tbb::task_arena>(oneapi::tbb::task_arena::attach())) {}
40 : m_task(iHolder.m_task), m_group(iHolder.m_group), m_arena(iHolder.m_arena) {
47 : m_task(iOther.m_task), m_group(iOther.m_group), m_arena(
std::
move(iOther.m_arena)) {
48 iOther.m_task =
nullptr;
81 if (0 ==
task->decrement_ref_count()) {
95 m_task->dependentTaskFailed(iExcept);
void increment_ref_count() noexcept
oneapi::tbb::task_group * m_group
std::exception_ptr exceptionPtr() const noexcept
Returns exception thrown by dependent task.
WaitingTaskWithArenaHolder & operator=(const WaitingTaskWithArenaHolder &iRHS)
bool taskHasFailed() const noexcept
std::shared_ptr< oneapi::tbb::task_arena > m_arena
void swap(Association< C > &lhs, Association< C > &rhs)
~WaitingTaskWithArenaHolder()
bool hasTask() const noexcept
void doneWaiting(std::exception_ptr iExcept)
oneapi::tbb::task_group * group() const
WaitingTaskWithArenaHolder()
unsigned int decrement_ref_count() noexcept
WaitingTaskHolder makeWaitingTaskHolderAndRelease()
void presetTaskAsFailed(std::exception_ptr iExcept) noexcept
void dependentTaskFailed(std::exception_ptr iPtr) noexcept
Called if waited for task failed.