4#ifndef WPI_MEMORY_THREADING_HPP_INCLUDED
5#define WPI_MEMORY_THREADING_HPP_INCLUDED
15#if WPI_HOSTED_IMPLEMENTATION
43 template <
class RawAllocator>
45 : std::integral_constant<bool, !allocator_traits<RawAllocator>::is_stateful::value>
53 template <
class RawAllocator,
class Mutex>
55 typename std::conditional<is_thread_safe_allocator<RawAllocator>::value,
no_mutex,
60 template <
class Mutex>
95 void lock() const noexcept {}
104 template <class Alloc, class Mutex>
114 : mutex_(other.mutex_), alloc_(other.alloc_)
116 other.mutex_ =
nullptr;
117 other.alloc_ =
nullptr;
145 template <
class Alloc,
class Mutex>
The default specialization of the wpi::memory::allocator_traits.
Definition threading.hpp:106
Alloc * operator->() const noexcept
Definition threading.hpp:134
locked_allocator(locked_allocator &&other) noexcept
Definition threading.hpp:113
Alloc & operator*() const noexcept
Definition threading.hpp:128
~locked_allocator() noexcept
Definition threading.hpp:120
locked_allocator(Alloc &alloc, Mutex &m) noexcept
Definition threading.hpp:108
locked_allocator & operator=(locked_allocator &&other) noexcept=delete
mutex_storage() noexcept=default
void unlock() const noexcept
Definition threading.hpp:96
~mutex_storage() noexcept=default
Definition threading.hpp:62
mutex_storage() noexcept=default
~mutex_storage() noexcept=default
mutex_storage & operator=(const mutex_storage &) noexcept
Definition threading.hpp:67
void unlock() const noexcept
Definition threading.hpp:77
void lock() const
Definition threading.hpp:72
detail namespace with internal helper functions
Definition input_adapters.h:32
typename std::conditional< is_thread_safe_allocator< RawAllocator >::value, no_mutex, Mutex >::type mutex_for
Definition threading.hpp:54
locked_allocator< Alloc, Mutex > lock_allocator(Alloc &a, Mutex &m)
Definition threading.hpp:146
Memory namespace.
Definition heap_allocator.hpp:20
Foonathan namespace.
Definition ntcore_cpp.h:26
Specifies whether or not a RawAllocator is thread safe as-is.
Definition threading.hpp:46
A dummy Mutex class that does not lock anything.
Definition threading.hpp:27
bool try_lock() noexcept
Definition threading.hpp:30
void lock() noexcept
Definition threading.hpp:28
void unlock() noexcept
Definition threading.hpp:35
#define WPI_MEMORY_ASSERT(Expr)
Definition assert.hpp:46