68 Priority stopPriority= Priority::Lowest );
81 Ticks::Duration dbgWarnAfter );
84 ALIB_DBG(, Ticks::Duration dbgWarnAfter) );
86 ALIB_DBG(, Ticks::Duration::TDuration dbgWarnAfter) )
88 ALIB_DBG(, Ticks::Duration(dbgWarnAfter) ) ); }
256 std::pair<Job*, bool>
pop();
305 template<
typename TJob,
typename... TArgs>
312 TJob* job=
manager.GetPoolAllocator()().New<TJob>( std::forward<TArgs>(args)... );
315 "Error in DedicatedWorker::schedule: Job size mismatch. Expected {} "
316 "while virtual method SizeOf returns {}.\n"
317 "Override this method for job-type <{}>",
318 sizeof(TJob), job->SizeOf(), &
typeid(*job) )
322 "Error in DedicatedWorker::schedule: Job pushed while this thread was not started, yet. "
338 template<
typename TJob,
typename... TArgs>
340 {
return schedule<TJob, TArgs...>( priority,
true, std::forward<TArgs>(args)... ); }
349 template<
typename TJob,
typename... TArgs>
377 virtual void Run()
override;
399 virtual bool process(
Job& vjob) { (void)vjob;
return false; }
431 "DedicatedWorker \"{}\" destructed, while job-queue is not empty.",
GetName() )
434 "DedicatedWorker destructed, while job-queue is not empty.")
491 manager.GetPoolAllocator().free(&job, size);
MonoAllocator ma
Mono allocator. Used for commands and by DedicatedWorkers.
ALIB_DLL void RemoveAll(Priority stopPriority=Priority::Lowest)
ALIB_DLL DWManager()
Constructor.
PoolAllocator & GetPoolAllocator()
ALIB_DLL void Add(DedicatedWorker &thread)
ALIB_DLL bool Remove(DedicatedWorker &thread, Priority stopPriority=Priority::Lowest)
PoolAllocator pool
Pool allocator. Used for command objects.
List< MonoAllocator, DedicatedWorker * > workers
The list of workers.
MonoAllocator & GetAllocator()
ALIB_DLL bool WaitForAllIdle(Ticks::Duration timeout, Ticks::Duration dbgWarnAfter)
virtual ALIB_DLL void Run() override
virtual bool process(Job &vjob)
virtual Ticks::Duration triggerPeriod() override
friend class DWManager
Type alias in namespace alib.
std::pair< Job *, bool > pop()
TJob & schedule(Priority priority, bool keepJob, TArgs &&... args)
bool stopJobPushed
Flag which is set when the stop-job was scheduled.
ALIB_DLL void pushAndRelease(QueueElement &&jobInfo)
DWManager & manager
needed as we inherit TCondition
int length
The current number of jobs in the queue.
List< HeapAllocator, QueueElement > queue
void ScheduleVoid(Priority priority, TArgs &&... args)
TJob & Schedule(Priority priority, TArgs &&... args)
bool stopJobExecuted
Flag which is set when the stop-job was executed.
DedicatedWorker(const character *threadName)
void ScheduleStop(Priority priority)
~DedicatedWorker() override
Destructor.
virtual void trigger() override
Ticks::Duration triggerDuration
void DeleteJobDeferred(Job &job)
alib::Ticks statLastJobExecution
virtual const character * GetName() const
Triggered(const String &pName)
@ Running
The thread's Run method is currently processed.
@ Started
Method Start was invoked but not running, yet.
Thread(const character *pName=A_CHAR(""))
virtual const character * GetName() const
#define ALIB_ENUMS_ASSIGN_RECORD(TEnum, TRecord)
#define ALIB_ASSERT_WARNING(cond, domain,...)
#define ALIB_ASSERT_ERROR(cond, domain,...)
#define ALIB_CALLER_PRUNED
#define ALIB_LOCK_WITH(lock)
Priority
Possible priorities of jobs assigned to an DedicatedWorker.
threads::Lock Lock
Type alias in namespace alib.
monomem::TPoolAllocator< MonoAllocator > PoolAllocator
monomem::TMonoAllocator< lang::HeapAllocator > MonoAllocator
threads::Thread Thread
Type alias in namespace alib.
alib::variables::Priority Priority
Type alias in namespace alib.
threadmodel::DWManager DWManager
Type alias in namespace alib.
time::Ticks Ticks
Type alias in namespace alib.
characters::character character
Type alias in namespace alib.
containers::List< TAllocator, T, TRecycling > List
Type alias in namespace alib.
threadmodel::DedicatedWorker DedicatedWorker
Type alias in namespace alib.
virtual size_t SizeOf() override
Job * JobToDelete
The job to be deleted.
Container element of the queue.
Priority priority
The job's priority.
Job * job
The job containing the pool-allocated shared data.
Job(const std::type_info &id)
virtual ~Job()=default
Protected destructor.
TCondition(const character *dbgName)