Как ожидать выполнения всех задач (созданной задачи и подзадачи )без использования TaskCreationOptions.AttachedToParent

Мне придется создать параллельное программное обеспечение, которое создаст несколько задач, и каждая задача может генерировать другую задачу (, которая также может генерировать другую задачу,... ).

Мне нужно, чтобы вызов метода, задача запуска которого блокирует :, не возвращался ДО завершения всех задач и подзадач.

Я знаю, что есть это TaskCreationOptions.AttachedToParentсвойство, но я думаю, что оно не подойдет:

Сервер будет иметь как минимум 8 ядер, и каждая задача будет создавать 2 -3 подзадачи, поэтому, если я установлю опцию AttachedToParent, у меня создастся впечатление, что вторая подзадача -не запустится раньше. три задачи первой подзадачи заканчиваются. Так что здесь у меня будет ограниченная многозадачность.

Итак, с этим деревом процессов:

enter image description here

У меня сложилось впечатление, что если я устанавливаю свойство AttachedToParent каждый раз, когда запускаю поток, B не закончится до завершения E, F, G, поэтому C начнется до завершения B, и у меня будет только 3 активных потока вместо 8 Я могу иметь.

Если я не поставлю свойство AttachedToParent, A будет завершено очень быстро и вернется.

Итак, как я могу убедиться, что мои 8 ядер всегда полностью используются, если я не устанавливаю эту опцию?

5
задан abatishchev 5 July 2012 в 11:10
поделиться