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::int64_t |
using | atomic_size_type = std::atomic< size_type > |
Public Member Functions | |
SPMCDeque ()=default | |
~SPMCDeque ()=default | |
void | Initialize (AtomicT *const memory_backing, const size_type capacity) noexcept |
SPMCDequeStatus | Push (const T &value) |
SPMCDequeStatus | Pop (T *const out_value) |
SPMCDequeStatus | Steal (T *const out_value) |
Private Types | |
using | AtomicT = std::atomic< T > |
Private Member Functions | |
AtomicT * | ElementAt (const size_type index) const noexcept |
Private Attributes | |
atomic_size_type | m_ProducerIndex |
atomic_size_type | m_ConsumerIndex |
unsigned char | m_Padding0 [k_FalseSharingPadSize - sizeof(m_ProducerIndex) - sizeof(m_ConsumerIndex)] |
AtomicT * | m_Data |
size_type | m_Capacity |
size_type | m_CapacityMask |
Definition at line 241 of file job_queue.hpp.
|
private |
Definition at line 244 of file job_queue.hpp.
using Job::SPMCDeque< T >::size_type = std::int64_t |
Definition at line 249 of file job_queue.hpp.
using Job::SPMCDeque< T >::atomic_size_type = std::atomic<size_type> |
Definition at line 250 of file job_queue.hpp.
|
default |
|
default |
|
inlinenoexcept |
Definition at line 268 of file job_queue.hpp.
References JobAssert, Job::SPMCDeque< T >::m_Capacity, Job::SPMCDeque< T >::m_CapacityMask, Job::SPMCDeque< T >::m_ConsumerIndex, Job::SPMCDeque< T >::m_Data, and Job::SPMCDeque< T >::m_ProducerIndex.
|
inline |
Definition at line 281 of file job_queue.hpp.
References Job::SPMCDeque< T >::ElementAt(), Job::FAILED_SIZE, Job::SPMCDeque< T >::m_CapacityMask, Job::SPMCDeque< T >::m_ConsumerIndex, Job::SPMCDeque< T >::m_ProducerIndex, and Job::SUCCESS.
|
inline |
Definition at line 299 of file job_queue.hpp.
References Job::SPMCDeque< T >::ElementAt(), Job::FAILED_RACE, Job::FAILED_SIZE, Job::SPMCDeque< T >::m_ConsumerIndex, Job::SPMCDeque< T >::m_ProducerIndex, and Job::SUCCESS.
|
inline |
Definition at line 342 of file job_queue.hpp.
References Job::SPMCDeque< T >::ElementAt(), Job::FAILED_RACE, Job::FAILED_SIZE, Job::SPMCDeque< T >::m_ConsumerIndex, Job::SPMCDeque< T >::m_ProducerIndex, and Job::SUCCESS.
|
inlineprivatenoexcept |
Definition at line 371 of file job_queue.hpp.
References Job::SPMCDeque< T >::m_CapacityMask, and Job::SPMCDeque< T >::m_Data.
Referenced by Job::SPMCDeque< T >::Pop(), Job::SPMCDeque< T >::Push(), and Job::SPMCDeque< T >::Steal().
|
private |
Definition at line 253 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::Initialize(), Job::SPMCDeque< T >::Pop(), Job::SPMCDeque< T >::Push(), and Job::SPMCDeque< T >::Steal().
|
private |
Definition at line 254 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::Initialize(), Job::SPMCDeque< T >::Pop(), Job::SPMCDeque< T >::Push(), and Job::SPMCDeque< T >::Steal().
|
private |
Definition at line 255 of file job_queue.hpp.
|
private |
Definition at line 259 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::ElementAt(), and Job::SPMCDeque< T >::Initialize().
|
private |
Definition at line 260 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::Initialize().
|
private |
Definition at line 261 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::ElementAt(), Job::SPMCDeque< T >::Initialize(), and Job::SPMCDeque< T >::Push().