BluFedora Job System v1.0.0
This is a C++ job system library for use in game engines.
|
#include <job_queue.hpp>
Public Types | |
using | size_type = std::size_t |
using | atomic_size_type = std::atomic< size_type > |
Public Member Functions | |
SPSCQueue ()=default | |
~SPSCQueue ()=default | |
void | Initialize (T *const memory_backing, const size_type capacity) noexcept |
bool | Push (const T &value) |
bool | Pop (T *const out_value) |
template<typename CallbackFn > | |
bool | PushLazy (CallbackFn &&callback) |
template<typename CallbackFn > | |
bool | PopLazy (CallbackFn &&callback) |
Private Member Functions | |
bool | IsFull (const size_type head, const size_type tail) const noexcept |
T * | ElementAt (const size_type index) const noexcept |
Static Private Member Functions | |
static bool | IsEmpty (const size_type head, const size_type tail) noexcept |
Private Attributes | |
atomic_size_type | m_ProducerIndex |
unsigned char | m_Padding0 [k_FalseSharingPadSize - sizeof(m_ProducerIndex)] |
size_type | m_CachedConsumerIndex |
unsigned char | m_Padding1 [k_FalseSharingPadSize - sizeof(m_CachedConsumerIndex)] |
atomic_size_type | m_ConsumerIndex |
unsigned char | m_Padding2 [k_FalseSharingPadSize - sizeof(m_ConsumerIndex)] |
size_type | m_CachedProducerIndex |
unsigned char | m_Padding3 [k_FalseSharingPadSize - sizeof(m_CachedProducerIndex)] |
T * | m_Data |
size_type | m_Capacity |
size_type | m_CapacityMask |
unsigned char | m_Padding4 [k_FalseSharingPadSize - sizeof(m_Data) - sizeof(m_Capacity) - sizeof(m_CapacityMask)] |
Definition at line 111 of file job_queue.hpp.
using Job::SPSCQueue< T >::size_type = std::size_t |
Definition at line 114 of file job_queue.hpp.
using Job::SPSCQueue< T >::atomic_size_type = std::atomic<size_type> |
Definition at line 115 of file job_queue.hpp.
|
default |
|
default |
|
inlinenoexcept |
Definition at line 146 of file job_queue.hpp.
References JobAssert, Job::SPSCQueue< T >::m_CachedConsumerIndex, Job::SPSCQueue< T >::m_CachedProducerIndex, Job::SPSCQueue< T >::m_Capacity, Job::SPSCQueue< T >::m_CapacityMask, Job::SPSCQueue< T >::m_ConsumerIndex, Job::SPSCQueue< T >::m_Data, and Job::SPSCQueue< T >::m_ProducerIndex.
|
inline |
|
inline |
Definition at line 164 of file job_queue.hpp.
References JobAssert, and Job::SPSCQueue< T >::PopLazy().
|
inline |
Definition at line 173 of file job_queue.hpp.
References Job::SPSCQueue< T >::ElementAt(), Job::SPSCQueue< T >::IsFull(), Job::SPSCQueue< T >::m_CachedConsumerIndex, Job::SPSCQueue< T >::m_ConsumerIndex, and Job::SPSCQueue< T >::m_ProducerIndex.
Referenced by Job::SPSCQueue< T >::Push().
|
inline |
Definition at line 193 of file job_queue.hpp.
References Job::SPSCQueue< T >::ElementAt(), Job::SPSCQueue< T >::IsEmpty(), Job::SPSCQueue< T >::m_CachedProducerIndex, Job::SPSCQueue< T >::m_ConsumerIndex, and Job::SPSCQueue< T >::m_ProducerIndex.
Referenced by Job::SPSCQueue< T >::Pop().
|
inlineprivatenoexcept |
Definition at line 215 of file job_queue.hpp.
References Job::SPSCQueue< T >::m_CapacityMask.
Referenced by Job::SPSCQueue< T >::PushLazy().
|
inlinestaticprivatenoexcept |
Definition at line 220 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::PopLazy().
|
inlineprivatenoexcept |
Definition at line 225 of file job_queue.hpp.
References Job::SPSCQueue< T >::m_CapacityMask, and Job::SPSCQueue< T >::m_Data.
Referenced by Job::SPSCQueue< T >::PopLazy(), and Job::SPSCQueue< T >::PushLazy().
|
private |
Definition at line 120 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::Initialize(), Job::SPSCQueue< T >::PopLazy(), and Job::SPSCQueue< T >::PushLazy().
|
private |
Definition at line 121 of file job_queue.hpp.
|
private |
Definition at line 122 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::Initialize(), and Job::SPSCQueue< T >::PushLazy().
|
private |
Definition at line 123 of file job_queue.hpp.
|
private |
Definition at line 127 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::Initialize(), Job::SPSCQueue< T >::PopLazy(), and Job::SPSCQueue< T >::PushLazy().
|
private |
Definition at line 128 of file job_queue.hpp.
|
private |
Definition at line 129 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::Initialize(), and Job::SPSCQueue< T >::PopLazy().
|
private |
Definition at line 130 of file job_queue.hpp.
|
private |
Definition at line 134 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::ElementAt(), and Job::SPSCQueue< T >::Initialize().
|
private |
Definition at line 135 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::Initialize().
|
private |
Definition at line 136 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::ElementAt(), Job::SPSCQueue< T >::Initialize(), and Job::SPSCQueue< T >::IsFull().
|
private |
Definition at line 137 of file job_queue.hpp.