gpt4 book ai didi

multithreading - Qt 线程与依赖注入(inject)结合的预期用途是什么?

转载 作者:行者123 更新时间:2023-12-01 22:54:09 28 4
gpt4 key购买 nike

让我们有一个可以从各种对象访问的工作线程。该工作对象有一些公共(public)槽,因此任何将其信号连接到工作槽的人都可以使用 emit 来触发工作线程的有用任务。

这个工作线程需要几乎是全局的,因为有几个不同的类使用它,其中一些位于层次结构的深处(主应用程序的子级的子级的子级)。

我想有两种主要方法可以做到这一点:

  1. 子类的所有方法都通过其返回值将消息向上传递到层次结构,并让主(例如 GUI)对象处理所有发出的消息。

  2. 所有需要工作线程服务的类都有一个指向 Worker 对象(它是主类的成员)的指针,并且它们都 connect() 到它在他们的构造函数中。然后,每个这样的类都会自行发射。基本上,依赖注入(inject)。

选项 2. 对我来说似乎更加干净和灵活,我只是担心它会创建大量连接。例如,如果我有一个需要线程的对象数组,我将为数组的每个元素都有一个单独的连接。

是否有一种“官方”方式可以做到这一点,正如 Qt 的创建者所希望的那样?

最佳答案

对此没有 Elixir 。您需要考虑许多因素,例如:

  • 为什么这些对象首先发出数据?是不是因为他们需要做某事,即发射是一个“命令”?然后也许他们可以调用某种服务来完成这项工作,甚至不用担心它是否会在另一个线程中发生。或者是因为他们通报了某个事件?在这种情况下,它们可能应该只发出信号而不连接它们。由使用代码来决定如何处理事件。
  • 我们正在讨论多少个对象?需要进行一些性能测试。也许这根本不是问题。
  • 如果有一个对象数组,它有什么作用?也许不需要使用普通数组,而是需要某种“容器”类?然后容器可以处理发射和连接,对象可以执行类似 container()->handle(data) 的操作。那么每个容器就只有一个连接。

关于multithreading - Qt 线程与依赖注入(inject)结合的预期用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37003495/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com