|
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 110 of file job_queue.hpp.
| using job::SPSCQueue< T >::size_type = std::size_t |
Definition at line 113 of file job_queue.hpp.
| using job::SPSCQueue< T >::atomic_size_type = std::atomic<size_type> |
Definition at line 114 of file job_queue.hpp.
|
default |
|
default |
|
inlinenoexcept |
Definition at line 144 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 162 of file job_queue.hpp.
References JobAssert, and job::SPSCQueue< T >::PopLazy().
|
inline |
Definition at line 170 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 190 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 212 of file job_queue.hpp.
References job::SPSCQueue< T >::m_CapacityMask.
Referenced by job::SPSCQueue< T >::PushLazy().
|
inlinestaticprivatenoexcept |
Definition at line 217 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::PopLazy().
|
inlineprivatenoexcept |
Definition at line 222 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 119 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::Initialize(), job::SPSCQueue< T >::PopLazy(), and job::SPSCQueue< T >::PushLazy().
|
private |
Definition at line 120 of file job_queue.hpp.
|
private |
Definition at line 121 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::Initialize(), and job::SPSCQueue< T >::PushLazy().
|
private |
Definition at line 122 of file job_queue.hpp.
|
private |
Definition at line 126 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::Initialize(), job::SPSCQueue< T >::PopLazy(), and job::SPSCQueue< T >::PushLazy().
|
private |
Definition at line 127 of file job_queue.hpp.
|
private |
Definition at line 128 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::Initialize(), and job::SPSCQueue< T >::PopLazy().
|
private |
Definition at line 129 of file job_queue.hpp.
|
private |
Definition at line 133 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::ElementAt(), and job::SPSCQueue< T >::Initialize().
|
private |
Definition at line 134 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::Initialize().
|
private |
Definition at line 135 of file job_queue.hpp.
Referenced by job::SPSCQueue< T >::ElementAt(), job::SPSCQueue< T >::Initialize(), and job::SPSCQueue< T >::IsFull().
|
private |
Definition at line 136 of file job_queue.hpp.