Open Dynamics Engine
Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
dxtemplateJobListContainer< tThreadLull, tThreadMutex, tAtomicsProvider > Class Template Reference

Public Types

typedef tAtomicsProvider dxAtomicsProvider
 
typedef tAtomicsProvider::atomicord_t atomicord_t
 
typedef tAtomicsProvider::atomicptr_t atomicptr_t
 
typedef tThreadMutex dxThreadMutex
 
typedef dxtemplateThreadingLockHelper< tThreadMutex > dxMutexLockHelper
 
typedef void dWaitSignallingFunction(void *job_call_wait)
 

Public Member Functions

bool InitializeObject ()
 
dxThreadedJobInfoReleaseAJobAndPickNextPendingOne (dxThreadedJobInfo *job_to_release, bool job_result, dWaitSignallingFunction *wait_signal_proc_ptr, bool &out_last_job_flag)
 
dxThreadedJobInfoAllocateJobInfoFromPool ()
 
void QueueJobForProcessing (dxThreadedJobInfo *job_instance)
 
void AlterJobProcessingDependencies (dxThreadedJobInfo *job_instance, ddependencychange_t dependencies_count_change, bool &out_job_has_become_ready)
 
bool EnsureNumberOfJobInfosIsPreallocated (ddependencycount_t required_info_count)
 
bool IsJobListReadyForShutdown () const
 

Private Member Functions

bool DoInitializeObject ()
 
void DoFinalizeObject ()
 
dxThreadedJobInfoPickNextPendingJob (bool &out_last_job_flag)
 
void ReleaseAJob (dxThreadedJobInfo *job_instance, bool job_result, dWaitSignallingFunction *wait_signal_proc_ptr)
 
ddependencycount_t SmartAddJobDependenciesCount (dxThreadedJobInfo *job_instance, ddependencychange_t dependencies_count_change)
 
void InsertJobInfoIntoListHead (dxThreadedJobInfo *job_instance)
 
void RemoveJobInfoFromList (dxThreadedJobInfo *job_instance)
 
dxThreadedJobInfoExtractJobInfoFromPoolOrAllocate ()
 
void ReleaseJobInfoIntoPool (dxThreadedJobInfo *job_instance)
 
void FreeJobInfoPoolInfos ()
 
bool DoPreallocateJobInfos (ddependencycount_t required_info_count)
 

Private Attributes

dxThreadedJobInfom_job_list
 
volatile atomicptr_t m_info_pool
 
tThreadMutex m_pool_access_lock
 
tThreadMutex m_list_access_lock
 
tThreadLull m_info_wait_lull
 
ddependencycount_t m_info_count_known_to_be_preallocated
 

The documentation for this class was generated from the following file: