Иерархическая структура потоков (поток внутри потоков) - PullRequest
0 голосов
/ 08 мая 2019

Как говорится в моей теме, я хотел бы создать иерархический подход к созданию потоков.

Я сделал рисунок, чтобы помочь объяснить.THREAD в синем блоке должно создавать 2 других дочерних угрозы.

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

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

Кроме того, поток синего блока будет завершен, только если все дочерние потокизакончил и сам.

enter image description here

У кого-нибудь есть какие-либо рекомендации по этой идее?

1 Ответ

0 голосов
/ 10 мая 2019

Самое простое требование к адресу - последнее:

Также голубая нить блока закончится только если все дочерние темы закончены и само собой.

Вы просто присоединитесь к дочерним потокам, чтобы это произошло.

Однако, что касается других ваших требований, ваша проблема в том, что между потоками нет родительско-дочерних отношений. Как только один поток запускает другой поток, эти два потока становятся равноправными. Следовательно, вы не можете полагаться на операционную систему или платформу, чтобы установить иерархию, которую вы ищете. Вам нужно будет реализовать это самостоятельно, возможно, с помощью какого-то механизма сигнализации, когда родительский поток или какой-либо поток контроллера убивает другие потоки.

Однако вам, вероятно, лучше, если вы перепроектируете свое приложение, чтобы оно не нуждалось в этой иерархии потоков. Подумайте, почему вы считаете, что вам это нужно, и какими еще способами вы можете выполнить то же самое - возможно, структурировать свои данные иерархически, и каждый поток работает только с данными, назначенными ему?

...