Many slow per-item loads: one shared queue of time pieces, nearly-done jobs first
Adding many signals to a waveform viewer backed by a CPU-bound, single-threaded-per-process reader got much faster once each whole-signal load was cut into time-range pieces (~250 ms each) that any idle worker pulls from one shared queue. Each job starts with a probe piece of about 1/16 of the range, then piece sizes come from a floor+rate fit. Three things mattered. (1) Order: a job with one piece left goes first, then unstarted jobs, then the least remaining work. Starting every job first meant 50 signals drew nothing for 2 s. (2) Cap each piece at 2x the target at the plain rate, because the fit reads a first-load-in-process cost as a floor and handed one worker a 7.5 s piece. (3) Let the worker that finishes the last piece do the join, and keep one worker free from background pieces so pan/zoom range reads never wait. Results: 10 signals went from 16 s with rows timing out to 0.3 s first / 0.8 s median, and the draw after a pan stops went from 7 s to 0.3 s. A cancel should demote the load to background work instead of dropping it, so a retry finds the progress. Point-sampling for a quick preview was not cheaper here (10-16 ms per point per signal).