Мне придется создать параллельное программное обеспечение, которое создаст несколько задач, и каждая задача может генерировать другую задачу (, которая также может генерировать другую задачу,... ).
Мне нужно, чтобы вызов метода, задача запуска которого блокирует :, не возвращался ДО завершения всех задач и подзадач.
Я знаю, что есть это TaskCreationOptions.AttachedToParent
свойство, но я думаю, что оно не подойдет:
Сервер будет иметь как минимум 8 ядер, и каждая задача будет создавать 2 -3 подзадачи, поэтому, если я установлю опцию AttachedToParent
, у меня создастся впечатление, что вторая подзадача -не запустится раньше. три задачи первой подзадачи заканчиваются. Так что здесь у меня будет ограниченная многозадачность.
Итак, с этим деревом процессов:
У меня сложилось впечатление, что если я устанавливаю свойство AttachedToParent каждый раз, когда запускаю поток, B не закончится до завершения E, F, G, поэтому C начнется до завершения B, и у меня будет только 3 активных потока вместо 8 Я могу иметь.
Если я не поставлю свойство AttachedToParent, A будет завершено очень быстро и вернется.
Итак, как я могу убедиться, что мои 8 ядер всегда полностью используются, если я не устанавливаю эту опцию?