A spin_mutex is a class that models the Mutex requirement using a spin lock. The spin_mutex class satisfies all requirements of mutex type from the [thread.mutex.requirements] ISO C++ section. The spin_mutex class is not fair or recursive.

// Defined in header <oneapi/tbb/spin_mutex.h>

namespace oneapi {
namespace tbb {
    class spin_mutex {
        spin_mutex() noexcept;

        spin_mutex(const spin_mutex&) = delete;
        spin_mutex& operator=(const spin_mutex&) = delete;

        class scoped_lock;

        void lock();
        bool try_lock();
        void unlock();

        static constexpr bool is_rw_mutex = false;
        static constexpr bool is_recursive_mutex = false;
        static constexpr bool is_fair_mutex = false;
} // namespace tbb
} // namespace oneapi

Member classes#

class scoped_lock#

Corresponding scoped_lock class. See the Mutex requirement.

Member functions#


Constructs spin_mutex with unlocked state.


Destroys an unlocked spin_mutex.

void lock()#

Acquires a lock. Spins if the lock is taken.

bool try_lock()#

Attempts to acquire a lock (non-blocking). Returns true if lock is acquired; false, otherwise.

void unlock()#

Releases a lock held by a current thread.