分层线程结构(线程内的线程)

时间:2019-05-08 19:39:22

标签: c# multithreading hierarchical

正如我的主题所述,我想创建一种线程化的分层方法。

我拍了张照片以帮助解释。蓝色方框中的“螺纹”将另外造成2种儿童威胁。

我需要创建一个依赖关系,以使如果要中止我的主线程,也应该中止我的子线程。

如果另一个具有更高优先级的蓝色块需要执行,我希望该蓝色块的子线程也进入等待状态。

此外,仅当所有子线程本身都完成时,蓝色块线程才会完成。

enter image description here

有人对此想法有任何建议吗?

2 个答案:

答案 0 :(得分:0)

解决最简单的要求是最后一个:

  

此外,仅当所有子级都处于蓝色状态时,蓝色块线程才会完成   线程本身就完成了。

您只需加入子线程即可实现这一目标。

但是,关于其他要求,您的问题是线程之间没有父子关系。一旦一个线程将另一个线程踢开,则两个线程成为对等端。因此,您不能依赖操作系统或框架来建立所需的层次结构。您可能需要自己通过某种信号传递机制来实现它,在这种机制中,父线程或某些控制器线程会杀死其他线程。

您可能会更好,但是,重新架构您的应用程序,因此它不需要适当的线程层次结构。想一想为什么您认为自己需要它,以及可以通过什么其他方式完成同一件事-也许以分层的方式构造数据,并使每个线程仅对分配给它的数据进行操作?

答案 1 :(得分:0)

您可以研究绿色线程。

一种简单的方法是设计一个描述工作任务的树,以及一个大小与三者成正比的线程池,以消耗树外的工作任务并将结果报告给树中指定的处理程序。

>

这种实现本质上是一个协程引擎。