- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我要的是如何获取进度数据。我可以随心所欲地实现酒吧。而且我使用的是 Visual C++ 2010,所以我可以使用 MFC。
现在,我正在编写多线程程序。自 VC++ 2010 以来,Microsoft 已经提供了 PPL 库。并行模式库 (PPL) 提供了在数据集合上并发执行工作的算法。实现多线程app很方便,但是遇到进度条问题。
如何为 parallel_invoke 设置进度条?
演示代码如下:
// parallel-invoke-structure.cpp
// compile with: /EHsc
#include <ppl.h>
#include <string>
#include <iostream>
using namespace concurrency;
using namespace std;
// Returns the result of adding a value to itself.
template <typename T>
T twice(const T& t) {
return t + t;
}
int wmain()
{
// Define several values.
int n = 54;
double d = 5.6;
wstring s = L"Hello";
// Call the twice function on each value concurrently.
parallel_invoke(
[&n] { n = twice(n); },
[&d] { d = twice(d); },
[&s] { s = twice(s); }
);
// Print the values to the console.
wcout << n << L' ' << d << L' ' << s << endl;
}
最佳答案
也许这是题外话,但我建议您查看 Cilk而不是 PPL。
这里是 a course at MIT (来自 Cilk 的主要创建者之一)概述了它的优点、缺点和具体用法。它非常易于使用,并且声称其性能比 PPL 高得多(以防您担心这一点)。
至于您关于进度条的具体问题,得出百分比是首要任务。如果你使用计时器来映射哪些工作花费了你多少(根据挂钟时间),你可以使用它(通过每个 worker 的回调来注册完成的工作)来驱动百分比。一旦你降低了百分比,将它连接到一个栏(在 shell 中)或 GUI 进度条就很简单了。
根据工作进程的工作量(它们的粒度),您可能需要考虑不同的 instrumentation 方法。 .如果你看this wikipedia page ,它将概述多种类型的分析(统计、基于事件等)。
最后一点:我发现进度条很难正确设置。任何人都可以移动酒吧。但是,要让它准确地代表需要多少时间的真实指示,就需要深入了解哪些因素会影响您的表现。与任何计算机程序一样,您的性能会根据运行它的系统(cpu 架构、IO 带宽、网络带宽)而改变。因此,即使您在盒子上可以预测它,您客户的盒子也可能会截然不同——如此之大以至于您的进度条不再产生良好的指示。
希望对您有所帮助...
关于c++ - 如何为 parallel_invoke 设置进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17806261/
我可以使用 parallel_invoke 多次执行同一个函数吗 就像我有遍历字符串的函数扫描一样,我可以让相同的多个任务对其进行操作吗。 最佳答案 是的,你可以。 或者,您可以使用 task_gro
我要的是如何获取进度数据。我可以随心所欲地实现酒吧。而且我使用的是 Visual C++ 2010,所以我可以使用 MFC。 现在,我正在编写多线程程序。自 VC++ 2010 以来,Microsof
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我在 Visual C++ 2010 中使用并发运行时,并且对 parallel_invoke 的功能感兴趣和 task_group (PPL 的一部分或 Parallel Patterns Libr
我是一名优秀的程序员,十分优秀!