MayaFlux 0.4.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ cancel_task() [2/2]

bool MayaFlux::Vruta::TaskScheduler::cancel_task ( const std::string &  name)

Cancel a task by name.

Parameters
nameTask name to cancel
Returns
True if found and cancelled

Definition at line 71 of file Scheduler.cpp.

72{
73 for (auto& op : m_conditional_pending_ops) {
74 bool expected = false;
75 if (op.active.compare_exchange_strong(expected, true,
76 std::memory_order_acquire, std::memory_order_relaxed)) {
77 op.entry = { nullptr, name };
78 op.is_addition = false;
79 m_conditional_pending_count.fetch_add(1, std::memory_order_relaxed);
80 return true;
81 }
82 }
83
84 for (auto& op : m_pending_ops) {
85 bool expected = false;
86 if (op.active.compare_exchange_strong(expected, true,
87 std::memory_order_acquire, std::memory_order_relaxed)) {
88 op.entry = { nullptr, name };
89 op.is_addition = false;
90 m_pending_count.fetch_add(1, std::memory_order_relaxed);
91 return true;
92 }
93 }
94
96 "Pending task queue full, could not cancel task '{}'", name);
97
98 return false;
99}
#define MF_ERROR(comp, ctx,...)
std::atomic< uint32_t > m_pending_count
std::atomic< uint32_t > m_conditional_pending_count
PendingTaskOp m_pending_ops[MAX_PENDING_TASKS]
PendingTaskOp m_conditional_pending_ops[MAX_PENDING_CONDITIONAL]
@ CoroutineScheduling
Coroutine scheduling and temporal coordination (Vruta::TaskScheduler)
@ Vruta
Coroutines, schedulers, clocks, task management.

References MayaFlux::Journal::CoroutineScheduling, m_conditional_pending_count, m_conditional_pending_ops, m_pending_count, m_pending_ops, MF_ERROR, and MayaFlux::Journal::Vruta.