Template Class mixed_multiguard

Class Documentation

template<size_type S>
class legion::core::async::mixed_multiguard

RAII guard that uses multiple ::async::readonly_rw_spinlocks to lock them all for user specified permissions. (similar to std::lock)

Note

Read-only operations can happen simultaneously without waiting for each other. Read-only operations will only wait for Read-Write operations to be finished.

Note

Read-Write operations cannot happen simultaneously and will wait for each other. Read-Write operations will also wait for any Read-only operations to be finished. legion::core::async::rw_spinlock

Public Functions

template<typename ...types>
inline explicit mixed_multiguard(types&&... arguments)

Creates readonly multi-guard and locks for specified permissions.

Note

Argument order should be as follows: (rw_spinlock&, lock_state, rw_spinlock&, lock_state, …)

mixed_multiguard(const mixed_multiguard&) = delete
mixed_multiguard(mixed_multiguard&&) = delete
inline ~mixed_multiguard()

RAII style unlocks lock from specified permissions.

mixed_multiguard &operator=(mixed_multiguard&&) = delete
mixed_multiguard &operator=(const mixed_multiguard&) = delete