Avoid potential overflow for dynamic task priority.
This commit is contained in:
parent
1f86470e4c
commit
280023dfc2
|
@ -996,7 +996,7 @@ package struct TaskScheduler {
|
||||||
|
|
||||||
private void doYieldAndReschedule(Task task)
|
private void doYieldAndReschedule(Task task)
|
||||||
{
|
{
|
||||||
auto tf = () @trusted { return task.taskFiber; } ();
|
import std.algorithm.comparison : min;
|
||||||
|
|
||||||
// insert according to priority, limited to a priority
|
// insert according to priority, limited to a priority
|
||||||
// factor of 1:10 in case of heavy concurrency
|
// factor of 1:10 in case of heavy concurrency
|
||||||
|
@ -1006,7 +1006,7 @@ package struct TaskScheduler {
|
||||||
|
|
||||||
// increase dynamic priority each time a task gets overtaken to
|
// increase dynamic priority each time a task gets overtaken to
|
||||||
// ensure a fair schedule
|
// ensure a fair schedule
|
||||||
t.m_dynamicPriority += t.m_staticPriority;
|
t.m_dynamicPriority += min(t.m_staticPriority, uint.max - t.m_dynamicPriority);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue