问题标签 [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.

0 投票
1 回答
672 浏览

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?

0 投票
0 回答
175 浏览

multithreading - 使用 Promise 时出现 C2248 错误

下面的代码触发错误:

错误 1 ​​错误 C2248:“std::promise<_Ty>::promise”:无法访问在类“std::promise<_Ty>”中声明的私有成员

我该如何解决?

非常感谢 !

下面是 threadsafe_stack 类:

0 投票
1 回答
647 浏览

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:找到下面的代码:

0 投票
1 回答
1280 浏览

c++ - 类中带有 std::bind(func, this) 的 std::packaged_task

我在这里准备了一个小片段来隔离我的问题。这里是 :

GCC 不想编译这个,说明:

我快要精疲力尽地试图完成这项工作。编译器错误消息对我来说完全是垃圾,因此我完全迷失了。请帮助如何实现这一目标。

并非代码仅用于示例目的,在我的真实项目中,我使用 packaged_task 和 std::thread(std::move(task) 等)。

谢谢!

0 投票
2 回答
475 浏览

c++ - 如何使用成员函数创建 packaged_task?

在下面的程序中,我正在尝试使用成员函数创建一个 packaged_task:

不幸的是,尝试导致错误。

如何才能做到这一点?

0 投票
1 回答
2757 浏览

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()不阻塞吗?

0 投票
1 回答
372 浏览

c++ - 完美的转发和 packaged_task 包装器

我正在尝试将 packaged_task 包装在一个泛型类中,但无法使用泛型函数对其进行初始化。我已经让它为一个特定的工作,但我希望它更抽象。仅供参考,如果您取消注释我注释掉的 2 行代码,则代码运行良好。我的猜测是,我试图错误地使用模板参数。

编辑:做了一些补充,以便这实际上有效,但同样的问题仍然存在。因此,如果我尝试将一个函数传递给我的类的 ctor,当我尝试调用 ret.get() 时,我会得到一个“错误的函数调用”。但是,如果我直接命名该函数,它就可以工作。

EDIT2.0:为了使这变得非常容易,我在这里只想知道为什么调用 tsk(func) 不起作用,而 tsk(countdown) 起作用?以及如何使 tsk(func) 工作......

0 投票
1 回答
319 浏览

c++ - c++:使用 packaged_task 构建异步

我正在尝试使用 packaged_task 实现异步。我正在通过模板函数 bsync 尝试此操作。bsync 接受 2 个参数:一个函数 f 和一个参数包 args,并返回一个未来 fut。未来是 f(args...) 返回的类型。即 - 回报是未来

我想我快到了,但是我遇到了类型转换错误。任何帮助,将不胜感激:

0 投票
1 回答
276 浏览

c++ - c ++:通过承诺打包任务

我正在尝试使用 promises 将 packaged_task 实现为模板类。

我的编译错误说我引用了一个已删除的函数。我怀疑我需要实现复制和/或移动语义,但我很困惑如何以及从哪里开始。非常感谢任何建议:

0 投票
0 回答
205 浏览

c++ - packaged_task operator() 获取异常

输出:

我是否以错误的方式使用它?我只想测试 operator() 函数。我知道如何将它与 std::thread 一起使用。

Ubuntu 15.04