title: Are Tasks an appropriate choice when all parallel work units MUST run at the same time?
body: <p>Tasks (the TPL) are the recommended way of performing parallelism since .NET 4.0 as they are a higher abstraction and let the runtime optimise things better.</p>
  
  <p>But in the scenario where all work units <em>must</em> happen at once, is TPL still an/the best option?</p>
  
  <p>My use-case is to spawn multiple instances (approximately 10) of PsExec in order to simultaneously run the same process on multiple remote PCs, and wait for each instance to exit. Any 'optimization' by the TPL which resulted in <em>not</em> running all instances in parallel would be disastrous.</p>
  
  <p>Does this use-case fall outside the scope of TPL and I'd be better just launching threads?</p>
  
  <p>I'm aware that you cannot execute more threads at once than you have cores but Windows will run more threads than cores by slicing, that is acceptable but scheduling any thread not to run until others have completed is not.</p>