在QT / C ++中,在后台启动并运行类成员函数

时间:2010-04-26 15:45:27

标签: c++ multithreading qt concurrency qt4

每分钟我想运行一个任务,而不是阻止其他GUI功能。我听说过QConcurent :: run ...

或者我应该使用信号和插槽吗?

2 个答案:

答案 0 :(得分:2)

使用QConcurrent听起来就像你需要的那样。并且你可以使用QFutureWatcher来完成信号(使用信号和插槽)

答案 1 :(得分:2)

您正在讨论的两个选项之间存在着天壤之别。

我的经历是 -

  1. 对于执行时间不长且GUI线程不是很忙的函数,请使用信号和插槽。这是最简单的。
  2. 如果您的任务运行时间较长,则可以按照SB的建议使用QConcurrent / QFutureWather。
  3. 您还可以查看使用QThreadQThreadPool
  4. 如果您需要多线程(仅使用Qt),您至少有3个选择。每种方法在工作方式和开销成本方面都有所不同。需要真正选择如何在应用程序的其余部分中使用线程。