|
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 240 of file job_queue.hpp.
|
private |
Definition at line 243 of file job_queue.hpp.
| using Job::SPMCDeque< T >::size_type = std::int64_t |
Definition at line 248 of file job_queue.hpp.
| using Job::SPMCDeque< T >::atomic_size_type = std::atomic<size_type> |
Definition at line 249 of file job_queue.hpp.
|
default |
|
default |
|
inlinenoexcept |
Definition at line 266 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 279 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 297 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 340 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 369 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 252 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 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.
|
private |
Definition at line 258 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::ElementAt(), and Job::SPMCDeque< T >::Initialize().
|
private |
Definition at line 259 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::Initialize().
|
private |
Definition at line 260 of file job_queue.hpp.
Referenced by Job::SPMCDeque< T >::ElementAt(), Job::SPMCDeque< T >::Initialize(), and Job::SPMCDeque< T >::Push().