【发布时间】:2011-02-13 05:46:19
【问题描述】:
有没有办法在 Qt 中创建一个线程而不使用子类化(即创建一个 QThread 类)?将数据发送到线程变得越来越困难。如果可以的话,是否可以在 Qt 中使用 win32 线程,有人可以给我一个例子吗?
谢谢。
【问题讨论】:
有没有办法在 Qt 中创建一个线程而不使用子类化(即创建一个 QThread 类)?将数据发送到线程变得越来越困难。如果可以的话,是否可以在 Qt 中使用 win32 线程,有人可以给我一个例子吗?
谢谢。
【问题讨论】:
您不一定要继承 QThread - 请参阅此处的讨论 http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/
【讨论】:
或者,如果您有许多简单的任务并希望以线程方式处理它们。 QRunnable 和 QThreadPool 提供了一种快速简便的方法,无需处理线程本身。
【讨论】:
如果你只想在另一个线程中运行一个函数,你应该检查QT Concurrent Namespace.
以下示例将在单独的线程中运行函数“aFunction()”,并且不会阻塞在调用该函数的行。当然,有一些机制可以了解函数何时结束、获取结果、等待它。
void aFunction(int arg1, double arg2, const QString &string);
int integer = ...;
double floatingPoint = ...;
QString string = ...;
QtConcurrent::run(aFunction, integer, floatingPoint, string);
【讨论】: