One of these days, it might be worth using the newer threadpools stuff (e.g.,
tpool,
ns_job,
or conceivably even Mayoff's ancient
dqd_threadpool)
and/or other features to have AOLserver
never run any jobs
directly in the scheduler thread, and yet still achieve the same
best-case efficiency and speed as the current simpler scheduler. A
real scheduler should never allow client code to interfere with the
scheduler's own housekeeping.
That would also change some of the ns_schedule edge case semantics, as
independent jobs would no longer be implicitly serialized due to
running in the single scheduler thread. But in the unlikely even that
the implicit serialization was actually desired, it should be easy
just to shove a bunch of legacy scheduled jobs into a single thread.