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 1214 of file job_system.cpp.

1215{
1216 return task->q_type;
1217}

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 1219 of file job_system.cpp.

1220{
1221 return AlignPointer(task->user_data, alignment);
1222}

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 1224 of file job_system.cpp.

1225{
1226 const Byte* const user_storage_end = std::end(task->user_data);
1227 Byte* const requested_storage_start = static_cast<Byte*>(AlignPointer(task->user_data, alignment));
1228 const Byte* const requested_storage_end = requested_storage_start + num_bytes;
1229
1230 JobAssert(requested_storage_end <= user_storage_end, "Cannot store object within the task's user storage. ");
1231
1232 task->user_data_start = static_cast<std::uint8_t>(requested_storage_end - task->user_data);
1233
1234 return requested_storage_start;
1235}
#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 1237 of file job_system.cpp.

1238{
1239 JobAssert(worker::IsMainThread(worker::GetCurrent()), "Must only be called by main thread.");
1240
1241 TaskPtr task_ptr;
1242 if (g_JobSystem->main_queue.Pop(&task_ptr))
1243 {
1244 Task* const task = task::TaskPtrToPointer(task_ptr);
1245 task::RunTaskFunction(task);
1246 return true;
1247 }
1248
1249 return false;
1250}
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:934

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 
)