问题标签 [qtconcurrent]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1893 浏览

c++ - QtConcurrent::blockingMapped() 和 std::vector<> 错误

似乎 QtConcurrent 与 QT 容器 (QList和) 一起工作正常,但与 STL 容器一起失败,这与文档QVector中声称的相反

以下是我想在容器上使用的虚拟函数:

有效的例子:

什么不起作用

它会导致编译错误,并带有非常长且混淆的模板错误。

如果有人知道为什么,那真的很有帮助!谢谢!


错误日志:

1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(442) : 错误 C2825: '_Alloc': 必须是类或命名空间后跟 '::' 1> .\main .cpp(187) : 参见对类模板实例化 'std::_Container_base_aux_alloc_real<_Alloc>' 的引用 1> 编译 1> [ 1> _Alloc=int 1> ] 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(442):错误 C2903:“重新绑定”:符号既不是类模板也不是函数模板 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility (442):错误 C2039:“重新绑定”:不是“的成员”global namespace'' 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(442) : error C2143: syntax error : missing ';' before '<' 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(442) : error C2039: 'other' : is not a member of '全局命名空间'' 1>C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(442) : 错误 C2238: ';' 前面的意外标记 1>.\main.cpp(187) : 错误 C2248: 'std::_Container_base_aux_alloc_real<_Alloc>::~_Container_base_aux_alloc_real' : 无法访问在类 'std::_Container_base_aux_alloc_real<_Alloc>' 1> 中声明的受保护成员 1> [ 1> _Alloc=int 1> ] 1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(435) : 请参见 'std::_Container_base_aux_alloc_real<_Alloc>::~_Container_base_aux_alloc_real' 1 的声明> 使用 1> [ 1> _Alloc=int 1> ] 1>.\main.cpp(187) :错误 C2440:“正在初始化”:

0 投票
2 回答
1857 浏览

qt - QtConcurrent blockingMappedReduced 错误

这是我第一次尝试使用 QtConcurrent::blockingMappedReduced,但我无法在 MSVC 2010 Express 中构建它(使用 QT 4.7.1 源代码)。

我创建了一个与我的实际代码相似的小示例,并且构建时存在相同的问题:

编译器抱怨最后一行调用了blockingMappedReduced。

来自在线 QT 文档(http://doc.qt.nokia.com/4.7-snapshot/qtconcurrentmap.html#blockingMappedReduced),原型如下:

恐怕我没有调试这个的专业知识。任何帮助将不胜感激。同样,由于我的 C++ 技能不是专家,因此需要明确的帮助才能让我理解它(即实际的代码片段,而不是假定比我拥有更多知识的东西,例如“你的论点必须是一个恒定的参考” )。

在此先感谢您的帮助。

0 投票
3 回答
1383 浏览

c++ - Qt 如何在 QtConcurrent 中将指针绑定到非静态成员函数?

QtConcurrent 文档

std::tr1::bind上面的代码片段似乎以与( std::bindfor > C++11)类似的方式绑定函数。也就是说,它采用了一个非静态成员函数 ( QByteArray::split()) 并(稍后)在它是其成员的对象的特定实例上调用它(我们已将其提供为bytearray)。

Qt 是如何做到这一点的?它是在使用std::tr1::bind还是boost::bind在幕后的某个地方?

该文档还提到了您将使用std::tr1or的情况boost,但我不完全理解绑定函数在该上下文中的含义。上述情况实际上是否与您可能使用的其他情况不同/更专业/更简单tr1or boost

我试图通过源头找到自己的方式,但我很快就迷路了!

0 投票
0 回答
590 浏览

c++ - 将函数传递给 QtConcurrent::map

这是我想要的代码:

我的问题:这不能编译,因为step()它既不是全局函数也不是State. 但从逻辑上讲,这是正确的,因为step() 它不会修改任何东西——它只访问映射结构,但同样是只读的。

然而,应该修改的是 set states。我想变得聪明并State*同时修改每个(以非阻塞方式)。

我应该step()全球化吗?这会有帮助吗?

0 投票
1 回答
104 浏览

ruby - 可以将 QtConcurrent 与 Ruby (mingw-32) 一起使用吗?

如何在 Ruby 中使用 QtConcurrent Qt 模块?我正在开发一个在 Windows(Ruby 1.9.3 mingw-32)中使用 Qt(通过 qtbindings 二进制 gem)的小应用程序,但我找不到使用线程的方法(或使用简单的并发方法调用)。任何帮助和任何示例都会非常有帮助。

提前致谢。

0 投票
2 回答
395 浏览

c++ - 在 Qt 中线程化一个函数

我有一个 for 循环,它将运行固定次数,通常在 100-300 范围内,具体取决于输入。这个循环的每次迭代都会调用一个我想要线程化的函数。线程函数从输入文件中获取数据,对其进行处理,然后以新格式将其写入输出文件......

这是一些高级代码:

然后在同一类中的 generateData 内:

我玩过QtConcurrent::run()QtConcurrent::mapped()但没有太多运气。我相信mapped()这将是一个不错的选择,但我的功能需要 2 张地图,而不仅仅是一张。

我在幻灯片 25 附近将此用作资源:http: //www.develer.com/promo/workshop/enhancing_with_multi_threading.pdf

谢谢!

0 投票
2 回答
5540 浏览

c++ - 使用 QtConcurrent::run 在单独的线程上连接信号/插槽

在我的应用程序中,我在对话框中有以下代码:

PerformOperation 函数最终会调用一个drive发出信号的函数FileProgressChanged,我的OnFileProgressChanged函数如下:

我正在阅读并看到QFutureQFutureWatcher支持监视进度值(这在这种情况下会很好用!),但它们不能与QtConcurrent::run.

我将如何将在单独线程上发出的移动信号连接到我的主线程上的插槽,以便我可以监视在发射器线程上调用的函数的进度?

*编辑 -- *我实际上发现我的代码有一个错误,但它似乎没有影响。我忘了在信号后添加this作为参数

0 投票
2 回答
2185 浏览

c++ - 术语不会评估为采用 1 个参数 QtConcurrent 的函数

嗨,伙计们,我真的需要你的帮助我想做的就是缩放图像并使用 QtConcurrent 运行它。我完全按照文档进行操作,但我仍然无法理解我的错在哪里是代码

此代码无法编译它一直给我错误

0 投票
1 回答
16191 浏览

c++ - QtConcurrent 与成员函数

我创建了一个 QFuture,我想用它来并行化对成员函数的调用。更准确地说,我有一个类 solveParallel 与 .h :

其中方法 runCompute() 正在创建 myFutureCompute 成员。.cpp 看起来像

包括(S)是好的。编译失败,在线

出现此错误:

此外,在同一行代码中“&Manager”的鼠标信息代表:错误:非静态成员引用必须相对于特定对象。

你知道诀窍在哪里吗?谢谢并恭祝安康。

0 投票
0 回答
388 浏览

c++ - QFuture 在 result() 中抛出未处理的异常

我在一个方法中运行 3 个并行线程(加上当前线程)以并行化对 na 优化方法的调用。代码看起来像

其中 resultOptim() 是 solverParallelData 中简单调用 QFuture result() 的方法。dataList 似乎已正确填写。然而,线

给出了一个我无法识别的未处理异常。以前,我遇到了并发访问问题,并且在 QMutex 类中程序崩溃。现在我猜来源不同,但我无法弄清楚出了什么问题。

谢谢并恭祝安康。