QtConcurrent::run()多线程的同步、异步 QFutureSynchronizer |
您所在的位置:网站首页 › qtconcurrent::run参数 › QtConcurrent::run()多线程的同步、异步 QFutureSynchronizer |
Qt 提供了 QtConcurrent 模块,处理一些常见的并行计算,最大的特点就是无需再使用互斥锁这种很低级的操作,全都封装好了。除此以外,QFuture、QFutureWatcher、QFutureSynchronizer 类提供了一些辅助性的操作;简单实现了子线程同步、异步操作; QtConcurrent::run() 需注意 默认扔进了全局线程池,即 QThreadPool::globalInstance()传参数的时候,都会复制一份副本。即使参数是引用,在函数中修改数据也不会对源对象产生任何影响。QFuture::result() 与 QFuture::waitForFinished()函数都会阻塞,直到结果可用才继续之后的代码。QtConcurrent::run()返回的QFuture不支持取消、暂停和进度报告。返回的QFuture只能用于查询运行/完成状态和函数的返回值。可以执行无参、含参、有返回值函数,以及lambda表达式 函数原型: QFuture QtConcurrent::run(Function function, ...) QFuture QtConcurrent::run(QThreadPool *pool, Function function, ...)默认全局线程池。 【QFuture】同步QFuture::result() 样例: int add(int &num) { return ++num; } QFuture future = QtConcurrent::run(add, 1); future.waitForFinished(); qDebug() |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |