|
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 238 of file job_queue.hpp.
|
private |
Definition at line 241 of file job_queue.hpp.
| using job::SPMCDeque< T >::size_type = std::int64_t |
Definition at line 246 of file job_queue.hpp.
| using job::SPMCDeque< T >::atomic_size_type = std::atomic<size_type> |
Definition at line 247 of file job_queue.hpp.
|
default |
|
default |
|
inlinenoexcept |
Definition at line 264 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 277 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 295 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 338 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 367 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 250 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 251 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 252 of file job_queue.hpp.
|
private |
Definition at line 256 of file job_queue.hpp.
Referenced by job::SPMCDeque< T >::ElementAt(), and job::SPMCDeque< T >::Initialize().
|
private |
Definition at line 257 of file job_queue.hpp.
Referenced by job::SPMCDeque< T >::Initialize().
|
private |
Definition at line 258 of file job_queue.hpp.
Referenced by job::SPMCDeque< T >::ElementAt(), job::SPMCDeque< T >::Initialize(), and job::SPMCDeque< T >::Push().