BluFedora Job System v1.0.0
This is a C++ job system library for use in game engines.
Job::detail Namespace Reference

Functions

QueueType taskQType (const Task *task) noexcept
 
void * taskGetPrivateUserData (Task *const task, const std::size_t alignment) noexcept
 
void * taskReservePrivateUserData (Task *const task, const std::size_t num_bytes, const std::size_t alignment) noexcept
 
bool mainQueueTryRunTask (void) noexcept
 
void assertHandler (const bool condition, const char *const filename, const int line_number, const char *const msg)
 

Function Documentation

◆ taskQType()

QueueType Job::detail::taskQType ( const Task task)
noexcept

Definition at line 1212 of file job_system.cpp.

1213{
1214 return task->q_type;
1215}

Referenced by Job::ParallelFor(), Job::ParallelInvoke(), and Job::ParallelReduce().

◆ taskGetPrivateUserData()

void * Job::detail::taskGetPrivateUserData ( Task *const  task,
const std::size_t  alignment 
)
noexcept

Definition at line 1217 of file job_system.cpp.

1218{
1219 return AlignPointer(task->user_data, alignment);
1220}

Referenced by Job::TaskMake().

◆ taskReservePrivateUserData()

void * Job::detail::taskReservePrivateUserData ( Task *const  task,
const std::size_t  num_bytes,
const std::size_t  alignment 
)
noexcept

Definition at line 1222 of file job_system.cpp.

1223{
1224 const Byte* const user_storage_end = std::end(task->user_data);
1225 Byte* const requested_storage_start = static_cast<Byte*>(AlignPointer(task->user_data, alignment));
1226 const Byte* const requested_storage_end = requested_storage_start + num_bytes;
1227
1228 JobAssert(requested_storage_end <= user_storage_end, "Cannot store object within the task's user storage. ");
1229
1230 task->user_data_start = static_cast<std::uint8_t>(requested_storage_end - task->user_data);
1231
1232 return requested_storage_start;
1233}
#define JobAssert(expr, msg)
Definition: job_assert.hpp:27
unsigned char Byte
Definition: job_system.cpp:87

References JobAssert.

Referenced by Job::TaskMake().

◆ mainQueueTryRunTask()

bool Job::detail::mainQueueTryRunTask ( void  )
noexcept

Definition at line 1235 of file job_system.cpp.

1236{
1237 JobAssert(worker::IsMainThread(worker::GetCurrent()), "Must only be called by main thread.");
1238
1239 TaskPtr task_ptr;
1240 if (g_JobSystem->main_queue.Pop(&task_ptr))
1241 {
1242 Task* const task = task::TaskPtrToPointer(task_ptr);
1243 task::RunTaskFunction(task);
1244 return true;
1245 }
1246
1247 return false;
1248}
static Job::JobSystemContext * g_JobSystem
Definition: job_system.cpp:226
LockedQueue< TaskPtr > main_queue
Definition: job_system.cpp:217
bool IsMainThread() noexcept
Allows for querying if we are currently executing in the main thread.
Definition: job_system.cpp:932

References g_JobSystem, Job::IsMainThread(), JobAssert, and Job::JobSystemContext::main_queue.

Referenced by Job::TickMainQueue().

◆ assertHandler()

void Job::detail::assertHandler ( const bool  condition,
const char *const  filename,
const int  line_number,
const char *const  msg 
)