Предположим, у вас есть набор подзадач, созданный следующим образом:
var childTasks = new List<Task<ResultType>>();
for (var i = 0; i < Count; i++)
{
var childTask = new Task<ResultType>(() => { logic here });
childTasks.Add(childTask);
childTask.Start();
}
Если какая-то логическая операция "A" сама была запущена как Задача и выполняется в потоке ThreadPool, который мы назвали«A», и он вызывает Task.WaitAll(childTasks.Select(x => (Task)x).ToArray()); //cast Task<T> to Task and make array as required by Task.WaitAll
, есть ли ЛЮБОЙ шанс, что поток ThreadPool «A» будет возвращен в пул во время операции WaitAll и использован для обслуживания одной из дочерних задач?Другими словами, есть ли вероятность того, что childTask в конечном итоге будет работать в том же потоке пула потоков, который использовала вызывающая задача?
Или WaitAll блокирует текущий поток и не позволяет ему вернуться в пул