Summary
Now that we have the safety guarantees that the Multithreaded APIs (and marker interfaces) provide, we can consider an exciting feature - allowing worker nodes to do work across multiple active builds, taking work from whichever builds are active instead of being constrained to a single logical build for the duration of that build.
Before these APIs, this was too risky because Tasks couldn't be trusted to be stateless - but with the APIs (and some additional documentation clarifying how stateful constructs like C# statics should be used safely) we can experiment with this possibility, which should help prevent the thundering-herd problem of multiple concurrent builds spawning NUMPROCS nodes that we have today.
Background and Motivation
Fill in later
Proposed Feature
Fill in later
Alternative Designs
No response
Summary
Now that we have the safety guarantees that the Multithreaded APIs (and marker interfaces) provide, we can consider an exciting feature - allowing worker nodes to do work across multiple active builds, taking work from whichever builds are active instead of being constrained to a single logical build for the duration of that build.
Before these APIs, this was too risky because Tasks couldn't be trusted to be stateless - but with the APIs (and some additional documentation clarifying how stateful constructs like C# statics should be used safely) we can experiment with this possibility, which should help prevent the thundering-herd problem of multiple concurrent builds spawning NUMPROCS nodes that we have today.
Background and Motivation
Fill in later
Proposed Feature
Fill in later
Alternative Designs
No response