请给出QT 线程池可以指定线程优先级的示例代码
时间: 2024-05-13 13:20:31 浏览: 66
下面是一个示例代码,演示了如何使用QT线程池来指定线程优先级:
```cpp
#include <QtCore/QCoreApplication>
#include <QtCore/QThreadPool>
#include <QtCore/QThread>
#include <QtCore/QDebug>
class MyTask : public QRunnable
{
public:
MyTask(int priority) : m_priority(priority) {}
void run() {
qDebug() << "Task running on thread" << QThread::currentThreadId() << "with priority" << m_priority;
}
private:
int m_priority;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThreadPool pool;
pool.setMaxThreadCount(4);
// Submit tasks with different priorities to the thread pool
pool.start(new MyTask(QThread::TimeCriticalPriority));
pool.start(new MyTask(QThread::HighestPriority));
pool.start(new MyTask(QThread::NormalPriority));
pool.start(new MyTask(QThread::LowestPriority));
// Wait for all tasks to finish before exiting
pool.waitForDone();
return a.exec();
}
```
在这个例子中,我们创建了一个名为`MyTask`的类,它继承自`QRunnable`,表示可以在线程池中运行的任务。`MyTask`类有一个构造函数,它接受一个整数参数,表示任务的优先级。
在`main`函数中,我们创建了一个`QThreadPool`对象,设置最大线程数为4。然后,我们向线程池提交了四个任务,每个任务的优先级不同。我们使用`start`函数将任务提交到线程池中。
最后,我们使用`waitForDone`函数等待所有任务完成,然后退出应用程序。
在运行此示例代码时,您将看到输出,其中显示每个任务在哪个线程上运行以及其优先级。您可以根据需要调整任务的优先级,以便在处理任务时对不同类型的任务进行更好的调度。
阅读全文