TaskScheduler: use randtime instead of custom implementation

This commit is contained in:
Carbenium
2020-07-21 01:11:55 +02:00
committed by Peter Keresztes Schmidt
parent 0b616e4865
commit f773bf68e0

View File

@@ -249,7 +249,7 @@ public:
TaskScheduler& Schedule(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max, task_handler_t const& task)
{
return Schedule(RandomDurationBetween(min, max), task);
return Schedule(randtime(min, max), task);
}
/// Schedule an event with a fixed rate.
@@ -259,7 +259,7 @@ public:
std::chrono::duration<_RepRight, _PeriodRight> const& max, group_t const group,
task_handler_t const& task)
{
return Schedule(RandomDurationBetween(min, max), group, task);
return Schedule(randtime(min, max), group, task);
}
/// Cancels all tasks.
@@ -291,7 +291,7 @@ public:
TaskScheduler& DelayAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return DelayAll(RandomDurationBetween(min, max));
return DelayAll(randtime(min, max));
}
/// Delays all tasks of a group with the given duration.
@@ -317,7 +317,7 @@ public:
std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return DelayGroup(group, RandomDurationBetween(min, max));
return DelayGroup(group, randtime(min, max));
}
/// Reschedule all tasks with a given duration.
@@ -338,7 +338,7 @@ public:
TaskScheduler& RescheduleAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return RescheduleAll(RandomDurationBetween(min, max));
return RescheduleAll(randtime(min, max));
}
/// Reschedule all tasks of a group with the given duration.
@@ -365,7 +365,7 @@ public:
std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return RescheduleGroup(group, RandomDurationBetween(min, max));
return RescheduleGroup(group, randtime(min, max));
}
private:
@@ -390,19 +390,6 @@ private:
return InsertTask(TaskContainer(new Task(end + time, time, group, DEFAULT_REPEATED, task)));
}
// Returns a random duration between min and max
template<class _RepLeft, class _PeriodLeft, class _RepRight, class _PeriodRight>
static std::chrono::milliseconds
RandomDurationBetween(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
auto const milli_min = std::chrono::duration_cast<std::chrono::milliseconds>(min);
auto const milli_max = std::chrono::duration_cast<std::chrono::milliseconds>(max);
// TC specific: use SFMT URandom
return std::chrono::milliseconds(urand(uint32(milli_min.count()), uint32(milli_max.count())));
}
/// Dispatch remaining tasks
void Dispatch(success_t const& callback);
};
@@ -506,7 +493,7 @@ public:
TaskContext& Repeat(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return Repeat(TaskScheduler::RandomDurationBetween(min, max));
return Repeat(randtime(min, max));
}
/// Schedule a callable function that is executed at the next update tick from within the context.
@@ -551,7 +538,7 @@ public:
TaskContext& Schedule(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max, TaskScheduler::task_handler_t const& task)
{
return Schedule(TaskScheduler::RandomDurationBetween(min, max), task);
return Schedule(randtime(min, max), task);
}
/// Schedule an event with a randomized rate between min and max rate from within the context.
@@ -563,7 +550,7 @@ public:
std::chrono::duration<_RepRight, _PeriodRight> const& max, TaskScheduler::group_t const group,
TaskScheduler::task_handler_t const& task)
{
return Schedule(TaskScheduler::RandomDurationBetween(min, max), group, task);
return Schedule(randtime(min, max), group, task);
}
/// Cancels all tasks from within the context.
@@ -588,7 +575,7 @@ public:
TaskContext& DelayAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return DelayAll(TaskScheduler::RandomDurationBetween(min, max));
return DelayAll(randtime(min, max));
}
/// Delays all tasks of a group with the given duration from within the context.
@@ -604,7 +591,7 @@ public:
std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return DelayGroup(group, TaskScheduler::RandomDurationBetween(min, max));
return DelayGroup(group, randtime(min, max));
}
/// Reschedule all tasks with the given duration.
@@ -619,7 +606,7 @@ public:
TaskContext& RescheduleAll(std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return RescheduleAll(TaskScheduler::RandomDurationBetween(min, max));
return RescheduleAll(randtime(min, max));
}
/// Reschedule all tasks of a group with the given duration.
@@ -635,7 +622,7 @@ public:
std::chrono::duration<_RepLeft, _PeriodLeft> const& min,
std::chrono::duration<_RepRight, _PeriodRight> const& max)
{
return RescheduleGroup(group, TaskScheduler::RandomDurationBetween(min, max));
return RescheduleGroup(group, randtime(min, max));
}
private: