jjzjj

concurrent.futures

全部标签

您如何在BOOST :: PYTHON中“来自__future__进口部”?

我正在使用boost::python和python2.7。我想启用python3.0风格的部门,以打电话给boost::python::eval,就像您从python程序中使用的那样from__future__importdivision看起来应该可以工作,尽管它将吸引所有未来,不仅是分区方法:boost::python::objectmainModule=boost::python::import("__main__");boost::python::objectmainNamespace=mainModule.attr("__dict__");mainNamespace["__future

c++ - std::future 或 std::shared_future 等待多线程

我有一个线程从容器中获取每个元素并向数据库发送上传请求。上传是同步完成的。容器中的元素是金融合约,它们可能有也可能没有与之关联的数据结构调用ticktable。现在,对于那些有ticktable的合约,我必须进行两次上传。1)首先将ticktable上传到db。db返回一个id。2)将id附加到契约(Contract)上,然后上传契约(Contract)。因此,例如,如果我循环遍历包含100个合约的容器,假设其中30个具有ticktable,其余70个没有。我想弄清楚std::future或std::shared_future是否适合这样的任务?我尝试通过将future与30个合约中的

c++ - 在没有阻塞的情况下开始剩余的 future

我在一个集合上有一个循环,我必须在其中执行昂贵的计算。我想使用future的类(class)并行执行此操作。据我了解,async要么启动线程,要么延迟它,仅在我调用get()或wait()时才启动它。因此,当我有线程未启动并尝试获取结果时,我会阻塞主线程并进行顺序处理。有没有办法启动剩余的延迟进程,所以一切都是并行计算的,并且在我调用get()时不会阻塞。//dothecalculationsstd::vector>futureList;for(autoelem:container){futureList.push_back(std::async(fct,elem));}//start

c++ - 计算可以从墙上反弹的球的 future 位置

我正在尝试做一些future的预测,我想计算球应该在哪里达到特定的高度(y)。球向上发射,可以从游戏的两侧弹起。弹跳不影响移动速度。我当前的配置是左下角是(0,0),右下角是(10,0),没有上限。代码:voidgetPositionXAtHeight(floatheight,Vec2pos,Vec2vel,floatgravityForce=9.8f,floatgameWidth,float&positionX){floata=gravityForce/2.0f;floatb=vel.y;floatc=pos.y-height;floatt=(sqrtf((b*b)-(4.0f*a*

c++ - 获取 std::future<T>::wait_for 的运行时间

有没有一种简单的方法来获取std::future::wait_for期间耗时?如果没有超时发生?我想实现这样的目标:std::futurefutureRet=std::async(std::launch::async,&Someone::doSomething,this);futureRet.wait_for(std::chrono::seconds(30));coutseconds.";是否有一种“getElapsedTime()”函数,还是我必须自己计算耗时? 最佳答案 有一个简单的方法使用:autostart=std::chr

c++ - 为什么我可以选择*不*在运行中调用 Concurrency::agent::done?

这是在MicrosoftC++并发API的上下文中。有一个名为agent的类(在Concurrency命名空间下),它基本上是一个状态机,您可以派生并实现纯虚拟agent::run.现在,您有责任调用agent::start,这会将其置于可运行状态。然后调用agent::wait*或其任何变体来实际执行agent::run方法。但为什么我们必须在正文中调用agent::done?我的意思是,显而易见的答案是agent::wait*将等到发出完成信号或超时已过,但是...设计师的意图是什么?为什么不让代理在agent::run返回时进入完成状态?这就是我想知道的。为什么我可以选择不调用d

c++ - 为什么执行者不在 Concurrency TS 和 std::future 接口(interface)中了?

std::future::then的接口(interface)在论文中N3784包含一个重载版本,该版本接受一个执行程序(在N3562中有更多描述)作为参数。所以如果你想更多地控制回调在哪个线程上执行,你可以这样做。但是这里的官方文档介绍了并发TS中的所有功能http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0159r0.html#futures.unique_future不包括.then()的重载并且根本不提及执行程序。它说Whentheobject'ssharedstateisready,thecontinuation

c++ - 多次调用 `std::future::then` 的行为是什么?

根据ConcurrencyTS,下面的代码会发生什么?autof0=std::async([]{return0;});autof1=f0.then([](auto&f){returnf.get()+10;});autof2=f0.then([](auto&f){if(!f.valid())return;returnf.get()+10;});到第三行代码执行时,f0已经有了continuation,所以根据TS,f0应该抛出异常,中止程序,UB或者有不同的行为?我不清楚。 最佳答案 根据cppreference,它是未定义的:Att

c++ - 在设置值之前是否必须调用 promise.get_future() ?

来自http://www.cplusplus.com/reference/future/promise/get_future/:Afterthisfunctionhasbeencalled,thepromiseisexpectedtomakeitssharedstatereadyatsomepoint[...]我不确定这是否意味着此操作顺序是强制性的:get_future()设置值()是否也有可能只有在设定值后才能从promise中获得future? 最佳答案 据我所知没有这样的限制。std::promise::set_value导

c++ - 标准保证在移动 std::packaged_task 后安全使用 std::future 吗?

假设我们有以下代码:#include#includeintmain(){autopackagedTask=std::packaged_task([]{std::cout(std::move(packagedTask));autov1=packagedTaskFuture.valid();//isvalidautov2=packagedTaskFuture.wait_for(std::chrono::seconds(0));//timeoutstate(*packagedTaskPtr)();//executetaskautov3=packagedTaskFuture.wait_for(