Lines Matching refs:m_state
44 spin_rw_mutex() noexcept : m_state(0) { in spin_rw_mutex()
50 __TBB_ASSERT(!m_state, "destruction of an acquired mutex"); in ~spin_rw_mutex()
68 state_type s = m_state.load(std::memory_order_relaxed); in lock()
70 if (m_state.compare_exchange_strong(s, WRITER)) in lock()
74 m_state |= WRITER_PENDING; in lock()
84 state_type s = m_state.load(std::memory_order_relaxed); in try_lock()
86 if (m_state.compare_exchange_strong(s, WRITER)) { in try_lock()
97 m_state &= READERS; in unlock()
104 state_type s = m_state.load(std::memory_order_relaxed); in lock_shared()
106 state_type prev_state = m_state.fetch_add(ONE_READER); in lock_shared()
111 m_state -= ONE_READER; in lock_shared()
115 __TBB_ASSERT(m_state & READERS, "invalid state of a read lock: no readers"); in lock_shared()
121 state_type s = m_state.load(std::memory_order_relaxed); in try_lock_shared()
123 state_type prev_state = m_state.fetch_add(ONE_READER); in try_lock_shared()
129 m_state -= ONE_READER; in try_lock_shared()
136 __TBB_ASSERT(m_state & READERS, "invalid state of a read lock: no readers"); in unlock_shared()
138 m_state -= ONE_READER; in unlock_shared()
148 state_type s = m_state.load(std::memory_order_relaxed); in upgrade()
154 if (m_state.compare_exchange_strong(s, s | WRITER | WRITER_PENDING)) { in upgrade()
156 … while ((m_state.load(std::memory_order_relaxed) & READERS) != ONE_READER) backoff.pause(); in upgrade()
157 …__TBB_ASSERT((m_state & (WRITER_PENDING|WRITER)) == (WRITER_PENDING | WRITER), "invalid state when… in upgrade()
159 m_state -= (ONE_READER + WRITER_PENDING); in upgrade()
172 m_state += (ONE_READER - WRITER); in downgrade()
173 __TBB_ASSERT(m_state & READERS, "invalid state after downgrade: no readers"); in downgrade()
187 std::atomic<state_type> m_state; variable