问题标签 [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 回答
1250 浏览

c++11 - 是否有 packaged_task::set_exception 等价物?

我的假设是下面packaged_task有一个promise。如果我的任务引发异常,我如何将其路由到关联的future?只需一个promise我可以调用set_exception - 我如何为 做同样的事情packaged_task

0 投票
3 回答
1155 浏览

c++ - `std::packaged_task` 是否需要 CopyConstructible 构造函数参数?

我有这个最小的不工作的代码示例

为什么不编译(在 gcc 4.8.1 上)?我怀疑,原因是,将 lambda 存储在需要参数std::packaged_task的内部。但是,只能移动。这是一个错误吗?标准对此有何评论?在我看来不应该需要争论,但争论应该就足够了。std::functionCopyConstructiblestd::packaged_taskstd::packaged_taskCopyConstructibleMoveConstructible

顺便说一句,当我替换std::packaged_task<int()>一切std::packaged_task<void()>编译正常。

GCC 4.8.1 给了我这个错误信息:

更新:我编写了以下测试程序。这似乎支持了原因缺失的假设CopyConstructabilitystd::packaged_task同样,对可以构造an 的对象的类型有什么要求?

0 投票
2 回答
8786 浏览

c++ - 何时在 async 或 packaged_task 上使用 promise?

我什么时候应该使用std::promiseover std::asyncor std::packaged_task?你能给我具体的例子来说明何时使用它们中的每一个吗?

0 投票
1 回答
763 浏览

c++ - 在 C++ 中关联 packaged_task 和线程

全部

我有一堂课:

和一个主要功能:

我希望这段代码可以创建三个线程,在一条数据的不同部分运行相同的操作。但是,在线程 t1 的定义中,编译器会弹出以下错误:

我可以知道我错了什么,我该如何做对?

提前谢谢了。

0 投票
4 回答
35198 浏览

c++ - packaged_task 和 async 有什么区别

在使用 C++11 的线程模型时,我注意到

似乎做同样的事情。我知道如果我使用 运行可能会有很大的不同std::asyncstd::launch::deferred但在这种情况下是否存在差异?

这两种方法有什么区别,更重要的是,在哪些用例中我应该使用其中一种方法?

0 投票
0 回答
327 浏览

multithreading - 在 c++11 中使用 packaged_task 的可运行实现

我正在尝试使用 packaged_task 在 c++11 中创建一个 Runnable 接口,其中子类覆盖 run() 函数。我不知道为什么这段代码没有编译。它给出与类型参数相关的错误。

/usr/include/c++/4.8.1/functional:1697:61: 错误:在'class std::result_of()>' typedef typename result_of<_Callable(_Args...)> 中没有名为'type'的类型::类型结果类型;

下面是我的代码片段。有人可以给我一些有关此错误的信息以及以这种方式实施 Runnable 是否是正确的继续方式?

0 投票
1 回答
1224 浏览

performance - std::packaged_task 真的很贵吗?

我对在 Opensuse Linux 上使用 gcc 4.7.2 的以下代码的结果感到惊讶:

结果看起来像这样(并且在运行中相当一致):

如果我正确地解释结果,仅仅创建一个std::packaged_task(甚至不执行它或存储它的参数)已经比executing pow. 这是一个有效的结论吗?

为什么会这样?

这是偶然的gcc特定的吗?

0 投票
3 回答
1727 浏览

c++ - 使用自己的线程运行的 C++11 packaged_task 需要一个 join() 才能获得未来

从我最近得到的 C++11 书中,我正在尝试在第 123 页(packaged_task 5.3.5.2)上构建示例,经过一些事情以使其与 XCode 一起工作,我有几个问题:

首先,似乎需要将函数指针传递给 packaged_task ctor。文本没有显示 & 符号,所以可能是拼写错误或标准更改较晚?

然后,更重要的是,我必须添加 thread.join(s) 才能调用 get 并避免获得 sigabrt 并且进程退出而不打印任何内容。我的印象是调用获取未来会阻塞,直到线程返回一个值,但情况似乎并非如此。添加连接似乎也违背了代码的异步(非阻塞)性质。如果需要,为什么不能加入未来呢?从文档中读取,它说 get 将隐式调用等待,即使在代码中添加等待,这仍然会导致 sigabrt。这是非常令人费解的。

我正在使用 c 语言方言 c11、-std=gnu++11 和 libc++(支持 c++11)。我尝试了其他没有运气的选项(使用 gnuc++ 时,它找不到)。这似乎是我可以用来构建代码的唯一组合。XCode 对编译 c++11 所需的内容非常挑剔。

提前感谢您的帮助。

这是书中的测试用例,其中包含我的“修复”以使代码运行:

0 投票
2 回答
1092 浏览

c++ - std::packaged_task 没有违反销毁承诺?

我在使用打包任务时遇到了一些非常奇怪的事情。在阅读~packaged_task时,我得到的印象是,如果 astd::packaged_task在执行之前被销毁,则承诺将被打破,并且尝试从未来获取结果应该抛出std::future_error

但是,在 Visual Studio 2013 上似乎并非如此。采取以下代码:

我期待得到一个std::future_erroronf.get()但它反而阻塞,等待打包的任务被执行。

尝试另一个编译器:http: //ideone.com/Wt0WOc确实会抛出一个std::future_error("Broken promise")......

我是在 Visual Studio 2013 中看到错误还是我错过了什么?

0 投票
1 回答
1199 浏览

multithreading - 将 std::packaged_task 中的成员函数与 std::thread 一起使用(不是 std::async)

我正在尝试从 std::thread 获取 std::future ,似乎唯一的方法(?)这样做是使用 std::packaged_task 。嗯,另外,我想在std::thread中调用的函数是一个类成员函数。我可以找到这个线程Use member function in std::packaged_task但他们使用 std::async 而不是 std::thread。我试图根据该帖子进行编译,但是当我尝试在此处编译此代码时:

我在 MSVC 2013 上收到以下错误:

我会很感激任何帮助!谢谢