title: Can the threadpool thread that's waiting on a set of Tasks end up serving one of those other Tasks?
body: <p>Suppose you have a set of sub-tasks created like so:</p>
  
  <pre><code>var childTasks = new List&lt;Task&lt;ResultType&gt;&gt;();
  for (var i = 0; i &lt; Count; i++)
  {
      var childTask = new Task&lt;ResultType&gt;(() =&gt; {  logic here  });
      childTasks.Add(childTask);
      childTask.Start();
  }
  </code></pre>
  
  <p>If some logical operation "A" was itself started as a Task and is running in a ThreadPool thread which we've named "A", and it calls <code>Task.WaitAll(childTasks.Select(x =&gt; (Task)x).ToArray()); //cast Task&lt;T&gt; to Task and make array as required by Task.WaitAll</code>, is there ANY chance that ThreadPool thread "A" is returned to the pool during the WaitAll operation and used to serve one of the child tasks?  In other words, is there any chance that a childTask will end up running on the same thread pool thread that the calling task was using?</p>
  
  <p>Or, does WaitAll block the current thread and prevent it from returning to the pool?</p>