问题标签 [ppl]
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.
c++ - ppl 中的任务执行属性
C++ ppl 库中新创建的任务是否会自动执行,或者是否需要任何机制来启动上述任务的执行?
c++ - 将 std::bind 与 Concurrency::parallel_for 一起使用时编译失败
在将一些使用 boost 库的旧代码迁移到 C++11 时遇到一个奇怪的编译错误。具体来说,使用 Visual Studio 2013 Professional Update 5。
以下示例代码无法编译并出现错误 C3848。但是,如果您将调用更改std::bind
为boost::bind
,则代码将按预期编译。
我期待std::bind
并且boost::bind
完全可以互换,但事实并非如此。
谁能建议如何使用上面的示例进行编译std::bind
?
c++ - 了解 work_queue 和 create_thread C++
了解 work_queue 或 create_thread 之间的区别。我对 work_queue 的理解是它在内核上执行线程,这些线程彼此异步工作,因为它们能够休眠和被调度。我对 create_thread 的理解是,在执行时分配了一个作业,并且只有该作业并通过操作系统执行。
提问的原因:所以我们在我的并行处理类中使用了parallel_for,但我有点困惑。所以 p_f 在 create_thread 上使用 work_queue 但我不确定我明白为什么。Create_thread 将创建 n 个线程(由函数指定),以便在工作队列根据可用的 cpu 数量创建线程时执行某些操作。这就是 p_f 使用 work_queue 而不是 create 线程的原因吗?感谢帮助!
c++ - 使用 PPL 查找数组中的最大元素
我需要实现一个函数,该函数将使用ppl.h
.
我有这个代码,基于这个答案:
但是,这段代码有一个问题:
- 它在执行之前抛出以下异常:
错误 C2780 'void Concurrency::_Parallel_for_each_impl(const _Random_iterator &,const _Random_iterator &,const _Function &,_Partitioner &&,std::random_access_iterator_tag)':需要 5 个参数 - 4 个提供的 parp D:\Microsoft Visual Studio 14.0\VC\include\ ppl.h 2987
错误 C2780 'void Concurrency::_Parallel_for_each_impl(_Forward_iterator,const _Forward_iterator &,const _Function &,const Concurrency::auto_partitioner &,std::forward_iterator_tag)':需要 5 个参数 - 4 个提供的 parp D:\Microsoft Visual Studio 14.0\VC\包括\ppl.h 2987
错误 C2893 无法专门化函数模板 'iterator_traits<_Iter>::iterator_category std::_Iter_cat(const _Iter &)' parp D:\Microsoft Visual Studio 14.0\VC\include\ppl.h 2987
你能帮我解决这个问题吗?
如何重写代码以使用
parallel_for
?(我无法引用传递给parallel_for
块中函数的数组参数)
c++ - 在数组中查找最大元素 OpenMP 和 PPL 版本的运行速度比串行代码慢得多
我正在尝试实现一个函数的两个版本,该函数将在浮点数组中找到最大元素。但是,我的并行函数似乎比串行代码运行得慢得多。
使用 4194304 (2048 * 2048) 浮点数组,我得到以下数字(以微秒为单位):
序列号:9433
PPL 代码:24184(慢两倍以上)
OpenMP 代码:862093(几乎慢了100倍)
这是代码:
PPL:
开放式MP:
是什么让代码运行如此缓慢?我错过了什么吗?
你能帮我找出我做错了什么吗?
c++ - 解释此 Concurrency::Task 调用中的“=”符号参数
有人可以向我解释这段代码中“=”参数的用途吗?我可以使用哪些其他参数来代替=
?它会有什么不同?MSDN 在这个问题上不是很清楚。
ppl - PPL:错误 C3861:“parallel_for”:找不到标识符
使用 win7 x86 和 vs2012 我有这样的代码:
得到一个这样的错误 error C3861: 'parallel_for': identifier not found
but visual studio 给出了“goto definition”,我有一个非常相似的项目,它编译得很好。而 vs 可以“-”我的 parallel_for 抽象
sockets - Windows 10 套接字和 MS PPL。服务器和客户端之间的 TCP 连接在几秒钟后中断
我的系统:
服务器:Windows 10 Pro 1511 10586.36 Microsoft Visual Studio 2015 社区 14.0.24720.00 更新 1
客户端:Windows 10 IoT Core(内部版本 10586)Raspberry Pi 2。
我的错误:
连接建立成功,但在正常工作几秒钟后丢失。所以数据交换实际上是有效的,但在 Release 版本中只有几秒钟,而在 Debug 版本中大约是 40-60 秒。
我总是得到:
我有时在客户端,有时在服务器端收到这些错误。
我阅读了 MS 示例 - https://code.msdn.microsoft.com/windowsapps/StreamSocket-Sample-8c573931。我还发现了如何使用 SocketStream 对象实现异步读/写操作的多种方法 - https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DataReaderWriter。
但我无法实现稳定的工作。下面是代码。
服务器端:
客户端:
我觉得某些东西(内部缓冲区或线程池)开销很大,这会导致异常。
可以请任何人解释一下吗?
c++ - 如何在循环中使用 ppl 任务和 .then?
我正在努力学习 ppl。而不是使用线程。让我们从头开始。我有这个简单的问题:
v1:
v1 显然很糟糕,因为这两个调用都会阻塞并最终相互等待。
v2:
v2 更好,因为不重要的消息不会阻塞重要的消息。此外,重要消息在收到后也会在实例中进行处理。尽管在我们收到重要消息之前不会检查不重要的消息。因此,当我收到这条不重要的信息时,它可能已经 20 多岁了。
v3:
v3 更快地获取不重要的消息。但它对于重要消息的速度也较慢。重要消息的处理不会在收到后立即进行。但只有当我四处检查时。由于我添加了睡眠以避免忙等待(并消耗过多的 cpu 时间),因此接收和处理重要消息的时间将比使用 v2.0 更长。
v4:
V4 与 v3 相同。只是用 ppl 任务代替。它的问题是一旦收到重要消息就不能立即处理。
v5)我想删除睡眠并使用important_msg_task“.then”在收到它后触发处理,“.then”在处理旧消息后侦听新消息,“.then”处理新消息等(对 unimportant_msg_task 执行相同的操作)。我不知道如何在循环中完成此操作。看来我最终会得到一个不断增长的连接任务链,一个接一个,永远。
那么你如何用 ppl 解决这个问题(或者至少没有原始线程)?
c++ - 如何在循环中等待两个不同类型的东西?
如何同时等待两件或多件事情(不同类型)?就像在事件循环中一样: