问题标签 [packaged-task]
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++ - possible data race using packaged_task and threads
I recently ran valgrind --tool=helgrind
on my project and got a warning "possible data race", which I thought was concerning. However, even this simple test program leads to this message:
Compiled with g++-4.9 -p -g -std=c++11 -pthread -O3 test.cpp
, the output of valgrind --tool=helgrind ./a.out
is:
My question: Am I safe to ignore this? If so, how to suppress these warnings?
multithreading - 使用 Promise 时出现 C2248 错误
下面的代码触发错误:
错误 1 错误 C2248:“std::promise<_Ty>::promise”:无法访问在类“std::promise<_Ty>”中声明的私有成员
我该如何解决?
非常感谢 !
下面是 threadsafe_stack 类:
c++ - 设置打包任务的正确方法
编译下面的程序时,我收到错误消息:
错误 1 错误 C2228: '.get_future' 左侧必须有类/结构/联合 c:\users\haliaga\documents\visual studio 2010\projects\test\test\accumulateexceptionsafe.cpp 62 1 测试
这实际上不是真正的问题。
如果您评论这些行:
你会得到下面的警告,说“task”没有被调用:
*警告 C4930: 'std::packaged_task<> task(accumulate_block (__cdecl )(void))': 未调用原型函数(是否打算定义变量?) 1> with 1> [ 1> =int (std::_List_iterator >>,std::_List_iterator>>), 1> 迭代器=std::_List_iterator>>, 1> T=int 1> ]
什么是指定的正确方法:
?
谢谢
PS:找到下面的代码:
c++ - 类中带有 std::bind(func, this) 的 std::packaged_task
我在这里准备了一个小片段来隔离我的问题。这里是 :
GCC 不想编译这个,说明:
我快要精疲力尽地试图完成这项工作。编译器错误消息对我来说完全是垃圾,因此我完全迷失了。请帮助如何实现这一目标。
并非代码仅用于示例目的,在我的真实项目中,我使用 packaged_task 和 std::thread(std::move(task) 等)。
谢谢!
c++ - 如何使用成员函数创建 packaged_task?
在下面的程序中,我正在尝试使用成员函数创建一个 packaged_task:
不幸的是,尝试导致错误。
如何才能做到这一点?
c++ - c++ future.get() 没有阻塞
根据“c++ 编程语言第 4 版”
§5.3.5.1 第 120 页中关于未来的内容:
如果该值还不存在,我们的线程将被阻塞,直到它到达。
这意味着get()是一种阻塞方法。
稍后在 §5.3.5.2 page 122 packaged_task中进行了解释,并给出了以下代码示例:
这是有道理的,因为根据引用,即使没有在它们上调用join() , comp2()函数中的 2 个线程完成后,以下程序也不会返回,因为调用comp2()的线程将等待未来s,直到它们get()他们的价值:
不幸的是,这并没有像我想的那样发生,而且我更少在comp2() 的 2 个线程上调用join(),会引发运行时错误。
有人可以解释一下我在这里缺少什么以及为什么get()不阻塞吗?
c++ - 完美的转发和 packaged_task 包装器
我正在尝试将 packaged_task 包装在一个泛型类中,但无法使用泛型函数对其进行初始化。我已经让它为一个特定的工作,但我希望它更抽象。仅供参考,如果您取消注释我注释掉的 2 行代码,则代码运行良好。我的猜测是,我试图错误地使用模板参数。
编辑:做了一些补充,以便这实际上有效,但同样的问题仍然存在。因此,如果我尝试将一个函数传递给我的类的 ctor,当我尝试调用 ret.get() 时,我会得到一个“错误的函数调用”。但是,如果我直接命名该函数,它就可以工作。
EDIT2.0:为了使这变得非常容易,我在这里只想知道为什么调用 tsk(func) 不起作用,而 tsk(countdown) 起作用?以及如何使 tsk(func) 工作......
c++ - c++:使用 packaged_task 构建异步
我正在尝试使用 packaged_task 实现异步。我正在通过模板函数 bsync 尝试此操作。bsync 接受 2 个参数:一个函数 f 和一个参数包 args,并返回一个未来 fut。未来是 f(args...) 返回的类型。即 - 回报是未来
我想我快到了,但是我遇到了类型转换错误。任何帮助,将不胜感激:
c++ - c ++:通过承诺打包任务
我正在尝试使用 promises 将 packaged_task 实现为模板类。
我的编译错误说我引用了一个已删除的函数。我怀疑我需要实现复制和/或移动语义,但我很困惑如何以及从哪里开始。非常感谢任何建议:
c++ - packaged_task operator() 获取异常
输出:
我是否以错误的方式使用它?我只想测试 operator() 函数。我知道如何将它与 std::thread 一起使用。
Ubuntu 15.04