有没有办法知道它完成了多少个工作?例如为什么没有类似QThreadPool::jobQueueSize()
或QThreadPool::finishedJobCount()
或QThreadPool::waitingJobCount()
的方法。
我看到QRunnable
提供任何此类功能。例如started()
或finished()
我应该像哈哈一样做。在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();
}
答案 0 :(得分:0)
QThreadPool是一个单例并使用接口实现习惯用法。这意味着实际的实现是由QThreadPoolPrivate类执行的,而QThreadPool只是接口。
第一种选择: 您需要修补QThreadPoolPrivate以获取所需的方法。
接下来,您需要修补QThreadPool以返回其隐藏的QThreadPoolPrivate实现 以便您可以访问此内部类
第二种选择: 修补QThreadPool的构造函数以注入您自己的实现,该实现提供您需要的方法。
在这两种情况下,您都需要修补Qt的源代码。