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

◆ unregister_waiter()

void MayaFlux::Vruta::NetworkSource::unregister_waiter ( Kriya::NetworkAwaiter awaiter)
private

Definition at line 106 of file NetworkSource.cpp.

107{
108 auto* expected = awaiter;
109 if (m_waiters_head.compare_exchange_strong(expected,
110 awaiter->m_next.load(std::memory_order_relaxed),
111 std::memory_order_acq_rel)) {
112 return;
113 }
114
115 auto* cur = m_waiters_head.load(std::memory_order_acquire);
116 while (cur) {
117 auto* next = cur->m_next.load(std::memory_order_relaxed);
118 if (next == awaiter) {
119 cur->m_next.compare_exchange_strong(next,
120 awaiter->m_next.load(std::memory_order_relaxed),
121 std::memory_order_acq_rel);
122 return;
123 }
124 cur = next;
125 }
126}
std::atomic< Kriya::NetworkAwaiter * > m_waiters_head
Head of the intrusive lock-free waiter list.

References MayaFlux::Kriya::NetworkAwaiter::m_next, and m_waiters_head.

Referenced by MayaFlux::Kriya::NetworkAwaiter::await_suspend(), and MayaFlux::Kriya::NetworkAwaiter::~NetworkAwaiter().

+ Here is the caller graph for this function: