QThreadPool :: jobQueueSize ()?QThreadPool :: finishedJobCount () - PullRequest
1 голос
/ 04 мая 2011

Есть ли способ узнать, сколько заданий он выполнил? например почему нет такого метода, как QThreadPool::jobQueueSize() или QThreadPool::finishedJobCount() или QThreadPool::waitingJobCount().

Я вижу, что ни один из них не предлагает такой функциональности. как started() или finished()

Должен ли я сделать Hack, как. в QRunnable::run()

/**
 * Assuming _controller has a link to all the Runnables. and I've a finite number of QRunnables that I recycle in my own Way. 
 */
void MyRunnable::run(){
    mutex.lock();
    _controller->markAsStarted(this);
    mutex.unlock();
    ....
    mutex.lock();
    _controller->markAsFinished(this);
    mutex.unlock();
}

1 Ответ

0 голосов
/ 05 мая 2011

QThreadPool является одноэлементным и использует идиому реализации интерфейса. Это означает, что фактическая реализация выполняется классом QThreadPoolPrivate, а QThreadPool является просто интерфейсом.

Первая альтернатива: Вам нужно исправить QThreadPoolPrivate, чтобы получить методы, которые вы хотите.

Далее вам нужно исправить QThreadPool , чтобы вернуть скрытую реализацию QThreadPoolPrivate. так что вы можете получить доступ к этому внутреннему классу

Второй вариант: Исправьте конструктор QThreadPool , чтобы внедрить собственную реализацию, предоставляющую необходимые вам методы.

В обоих случаях вам нужно исправить исходный код Qt.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...