title: Is it a bad idea to await a CPU-bound task and if so, then why? What is the best practice for scheduling CPU work via a task?
body: <p>Is it a bad idea to do this?</p>
  
  <pre><code>var result = await Task.Run(CPUBoundWork);
  NotAwaitedCPUWork();
  </code></pre>
  
  <p>Is that because the work that follows the <code>await</code> statement, i.e. the continuation, which in this case would be the method call to <code>NotAwaitedCPUWork</code> would simply contest for the CPU with the awaited work represented by the task that has already been scheduled, and this would unnecessarily put load on the task scheduler to inject more threads or queue up the work on an existing thread; as a result, the continuation will anyway have to wait until a thread becomes available?</p>
  
  <p>If this explanation is the most plausible one, then what is the correct way to run CPU bound work with a task assuming that you <em>do</em> care about the result of the CPU-bound work? Do you just block the current thread by <code>Task.Wait()</code>ing on the CPU-bound work?</p>
  
  <p>What is the recommended practice for awaiting the completion of CPU-bound work when you care about the result of the work?</p>