Merge pull request #407 from imjfckm/schedule-in-sort
Add conditional reschedules to env_sort
This commit is contained in:
commit
382247b5e7
@ -266,7 +266,7 @@ void env_sort(void *base, size_t num, size_t size,
|
|||||||
|
|
||||||
/* heapify */
|
/* heapify */
|
||||||
for ( ; i >= 0; i -= size) {
|
for ( ; i >= 0; i -= size) {
|
||||||
for (r = i; r * 2 + size < n; r = c) {
|
for (r = i; r * 2 + size < n; r = c) {
|
||||||
c = r * 2 + size;
|
c = r * 2 + size;
|
||||||
if (c < n - size &&
|
if (c < n - size &&
|
||||||
cmp_fn(base + c, base + c + size) < 0)
|
cmp_fn(base + c, base + c + size) < 0)
|
||||||
@ -275,6 +275,7 @@ void env_sort(void *base, size_t num, size_t size,
|
|||||||
break;
|
break;
|
||||||
swap_fn(base + r, base + c, size);
|
swap_fn(base + r, base + c, size);
|
||||||
}
|
}
|
||||||
|
env_cond_resched();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sort */
|
/* sort */
|
||||||
@ -289,5 +290,6 @@ void env_sort(void *base, size_t num, size_t size,
|
|||||||
break;
|
break;
|
||||||
swap_fn(base + r, base + c, size);
|
swap_fn(base + r, base + c, size);
|
||||||
}
|
}
|
||||||
|
env_cond_resched();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user