草庐IT

completable-future

全部标签

c++ - 为什么 std::future::wait_for 不等待正确的持续时间?

我不明白为什么调用std::future::wait_for时测量的持续时间和指定的持续时间之间的差异会随着指定持续时间的增加而增加。当我告诉std::future等待10ns并测量耗时时,我得到~2000ns。现在,10纳秒是一个非常短的持续时间,所以可能相关函数调用涉及太多开销以等待这么短的时间。但是当我告诉std::future等待100000ns并测量耗时时,我得到~150000ns。分别等待10微秒和100微秒时,可以看到类似的效果。#include#include#include#includeusingnamespacestd::chrono;usingnamespace

c++ - 将执行从一个线程转移到另一个线程以实现任务并行性和 future 调用

我正尝试在C++中实现一个future调用机制。虽然这只是一个测试代码(制作有点匆忙),但我打算在我正在使用的一种语言的运行时使用类似的东西来实现透明并行。我已经干掉了我正在处理的代码以使其更小一些,尽管它仍然很大:#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;usingnamespacestd::chrono;//--------------------------------------------------------------

c++ - Boost::Future 延迟延续展开死锁

我正在使用Boost的promise和future并在使用延续时遇到了边缘情况。我的代码使用一个返回future的延续,并在获取其值之前解包then()的结果。#defineBOOST_THREAD_VERSION5#include#includeintmain(intargc,char*argv[]){boost::promisepromise;boost::futurefuture=promise.get_future();promise.set_value(42);intresult=future.then(boost::launch::async,[](boost::futur

c++ - std::promise 是否在内部使用 std::condition_variable 来通知关联的 std::future?

我的问题是std::promise是否通过使用std::condition_variable通知关联的std::future?我搜索了std::promise的源代码并找到了这个website.但是我没有看到std::promise在其成员数据中有std::condition_variable。 最佳答案 这是libc++的答案。搜索condition_variable在只返回一个结果://lines531--538class_LIBCPP_TYPE_VIS_LIBCPP_AVAILABILITY_FUTURE__assoc_sub

future 是 c# XNA 还是 c++ directX11?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我最近开始学习XNA,并且非常喜欢它和它的托管代码。然而,在做了一些阅读之后,似乎对于Windows8和Windows8手机XNA将不会更新以使用这些新功能,而将使用Directx11。那么,有人知道这是不是真的吗?我不知道任何c++,但我对c#相当有信心,所以我想坚持使用XNA,但如果future将使用c++和Directx,也许我现在应该切换?另外,

c++ - 为什么我用了std::future::get还要加入线程?

voidset_string(std::promise&p){p.set_value("setfromthread");}intmain(){std::promisep;std::futuref=p.get_future();std::threadt(&set_string,std::ref(p));std::cout为什么我需要在调用f.get()之后调用t.join()?我认为f.get()会阻塞主线程,直到它可以得到结果,这意味着线程已经完成。 最佳答案 因为即使在线程完成执行后它仍然是可连接的。您可以调用detach以允许独

C++, Linux : error: conversion from ‘boost::unique_future<void>’ to non-scalar type ‘boost::shared_future<void>’ requested. 如何绕过它?

我尝试使用boostthreadfutures.所以如图here我们可以得到sharedfuture来自packagedtask.所以我在linux上尝试这样的功能:templatevoidpool_item(boost::shared_ptr>pt){boost::shared_futurefi=pt->get_future();//error//...但调用它时出错:../../src/cf-util/thread_pool.h:Inmemberfunction‘voidthread_pool::pool_item(boost::shared_ptr>)[withtask_retu

c++ - 树莓派工具链上的 std::shared_future

我正在尝试为RaspberryPi交叉编译一个大型项目。我正在使用由crosstool-ng构建的工具链,gcc版本4.7.3。当看到std::shared_future时,编译会停止。我收到此错误:test.cpp:5:27:error:aggregate'std::shared_futurexxx'hasincompletetypeandcannotbedefined下面是产生该错误的源文件:#includeintmain(){std::shared_futurexxx;return0;}这个相同的源文件在RapsberryPi本身上编译成功。这是crosstool工具链中的错误吗

c++ - std::future 是否旋转等待?

在更详细地解释这个问题之前,我会注意到答案显然是依赖于实现的,所以我主要询问的是libstdc++,但我也有兴趣听听libc++。操作系统为Linux。在std::future上调用wait()或get()会阻塞,直到通过异步操作设置结果--std::promise、std::packaged_task或std::asyn函数。结果的可用性通过共享状态传达,这基本上是一个原子变量:future等待共享状态被promise(或异步任务)标记为就绪。这种等待和通知是通过futex系统调用在libstdc++中实现的。假设futex是高性能的,在future期望只等待极短时间(大约几微秒)的

c++ - C++ 中的 std::promise 和 std::future

std::promiseprovidesameansofsettingavalue(oftypeT),whichcanlaterbereadthroughanassociatedstd::futureobject这两者究竟有何关联?我担心future会与错误的promise配对是否合理?更新:来自并发操作的示例...(虽然代码无法编译)#includevoidprocess_connections(connection_set&connections){while(!done(connections)){for(connection_iteratorconnection=connect