|
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 145 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 163 of file job_queue.hpp.
References JobAssert, and Job::SPSCQueue< T >::PopLazy().
|
inline |
Definition at line 172 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 192 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 214 of file job_queue.hpp.
References Job::SPSCQueue< T >::m_CapacityMask.
Referenced by Job::SPSCQueue< T >::PushLazy().
|
inlinestaticprivatenoexcept |
Definition at line 219 of file job_queue.hpp.
Referenced by Job::SPSCQueue< T >::PopLazy().
|
inlineprivatenoexcept |
Definition at line 224 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.