Calling `uv_timer_start(h, cb, 0, 0)` from a timer callback resulted in the timer running immediately because it was inserted at the front of the timer heap. If the callback did that every time, libuv would effectively busy-loop in `uv__run_timers()` and never make forward progress. Work around that by collecting all expired timers into a queue and only running their callback afterwards. Fixes: https://github.com/libuv/libuv/issues/4245 Co-authored-by: Ben Noordhuis <info@bnoordhuis.nl> |
||
|---|---|---|
| .. | ||
| uv | ||
| uv.h | ||