6

の使用に関する簡潔な例を探していますQThreadPool。これが私がそれをどのように使用したかです:

QThreadPool *thread_pool = QThreadPool::globalInstance();
MyThread *thread = new MyThread();
thread_pool->start(thread);


class MyThread : public QRunnable {
public:
    MyThread();
    ~MyThread();
    void run();
};

void MyThread::run()
{
    qDebug() << "MyThread";
}

上記は正しい慣行ですか?
PS: リファレンスで見waitForDoneましたが、いつ電話すればよいwaitForDoneですか?

4

1 に答える 1

7

これは、1 つの例外を除いてほぼ正しいです。QRunnableはスレッドではないため、クラスを呼び出すべきではありませんMyThreadMyRunnableまたはMyTaskより正しいです。

コードはドキュメンテーション ページの例とほとんど同じであることに注意してください。ドキュメントは、簡潔な例の最良の情報源です。

waitForDoneすべてのランナブルが処理されるまで待ちたい場合は、呼び出す必要があります。アプリのアーキテクチャによって異なります。通常、すべてQRunnableの を作成して開始し、その結果を使用したい場合です。

于 2013-06-21T13:24:21.100 に答える