multithreading - 在工作任务中使用 QThreadPool
问题描述
我有运行一些任务的 QThreadPool。我还需要在其他任务中创建新任务。为此,我认为实现以下内容:
class Task : public QRunnable
{
QThreadPool *pool;
public:
Task (QThreadPool *p) : pool(p){}
void run()
{
static std::atomic<int> counter = ATOMIC_FLAG_INIT;
qDebug() << QThread::currentThreadId();
int c;
if ((c = counter.load(std::memory_order_acquire)) < 10) {
pool->start(new Task(pool));
counter.store(c + 1, std::memory_order_release);
}
}
};
int main(int argc, char *argv[])
{
//...
QThreadPool threadPool;
threadPool.start(new Task(&threadPool));
//...
}
但我不确定这是正确的方法。
解决方案
推荐阅读
- google-apps-script - 如何在不指定工作表名称的情况下从活动工作表复制范围?
- android - Android RecyclerView 和自定义 Adapter 位置元素的变化
- javascript - Three.js - 使用移动设备上的设备倾斜/陀螺仪控制相机运动
- c - 在 C 中访问字符数组
- c# - c# wpf System.IndexOutOfRangeException
- php - 下拉数量的 Woocommerce 产品总价(单一和变化)
- javascript - 当页面上有该类的第二个 div 时,Javascript 停止工作
- webpack - Webpack 5 和 Web Workers
- python - 如何从用户那里获取输入并检查其中的一部分是否是我字典中的键?
- javascript - 如何在行单击时用数据填充指定的详细信息网格