You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Replace it with a single Vec which contains the list of crates to build; each
worker just pops the next crate in the list and then executes all of the steps
for that crate in series (reading configuration etc as necessary).
We can in theory separate out the toolchains such that each worker only handles
one toolchain (which would likely save disk space), but that is extra work and
does not seem particularly beneficial at this time. It would also not be that
hard to just duplicate the crate list N times and have each worker created with
a specific toolchain and keep this setup almost as-is.
Overall this is a much simpler approach, removing a considerable amount of
complexity from the workers and essentially eliminating any worker thread
synchronization (e.g., condvars, running/not running tasks, etc). Popping from
the Vec of crates is fast and worker threads will terminate when the list is
exhausted, but will otherwise just work on the next crate in queue. This nearly
matches the current setup -- today a crate is likely scheduled in parallel for
each toolchain across two worker threads -- but it shouldn't make a significant
difference in overall runtimes.
0 commit comments