总结一下最近使用qt多线程和线程池遇到的一些问题。
1.QThreadPool
线程池的作用是什么呢?把多个线程丢个一个线程池中,让他对目前的线程进行管理。比如最大运行的线程数,以及最大线程数外的线程就处于等待状态等。
要放到线程池中的线程必须继承自QRunable类,这个类有个缺点,就是无法向外面发送信号。所以这个类不适合用来做界面的交互,而只是适合用来做数据的处理等。
2.QThread
使用QThread ,看了官方的文档,有两种方法,采用一个代理类来对线程进行管理。
class Worker : public QObject
{
Q_OBJECT
QThread workerThread;
public slots:
void doWork(const QString ¶meter) {
// ...
emit resultReady(result);
}
signals:
v