Precision of `threadDelay` with -threaded could be increased on Linux
Motivation
threadDelay
takes a sleep duration as a number of microseconds, but the implementation used on Linux when -theaded
is specified uses much coarser precision, leading to surprise.
Current implementation
When using the epoll
backend, the timer manager uses the timeout
argument to epoll_wait
to service threadDelay
requests. However, this has only millisecond precision, and it's also round up to the system clock granularity.
Proposed change
The epoll
backend maintains a timer fd (created using timerfd_create
), and uses it whenever a finite timeout is requested.