32 static constexpr int no_owner() {
return std::numeric_limits<int>::max(); }
45 VertexMutex& operator=(
const VertexMutex&)
noexcept {
return *
this; }
46 VertexMutex& operator=(VertexMutex&&) noexcept {
return *
this; }
48 bool trylock() {
return m_mutex.try_lock(); }
87 int get_owner()
const {
return m_owner.load(std::memory_order_relaxed); }
89 void set_owner(
int n) { m_owner.store(n, std::memory_order_relaxed); }
91 void reset_owner() { m_owner.store(
no_owner(), std::memory_order_relaxed); }
95 std::atomic<int> m_owner{
no_owner()};