草庐IT

async和await

全部标签

c++ - 我可以在不等待 future 限制的情况下使用 std::async 吗?

高级我想在异步模式下调用一些没有返回值的函数,而无需等待它们完成。如果我使用std::asyncfuture对象在任务结束之前不会破坏,这会使调用在我的情况下不同步。示例voidsendMail(conststd::string&address,conststd::string&message){//sendingthee-mailwhichtakessometime...}myResonseTypeprocessRequest(args...){//Dosomeprocessingandvaluatetheaddressandthemessage...//Sendingthee-ma

c++ - 为什么从 `std::async` 阻塞返回的 future 的析构函数?

当试图回答另一个Stackoverflowquestion,我意识到这个简单的C++11片段隐式阻塞了调用线程:std::async(std::launch::async,run_async_task)对我来说,这似乎是规范的C++11异步启动任务而不关心结果的方式。相反,为了实现这一点,显然必须显式地创建和分离一个线程(参见answer到提到的问题)。所以这是我的问题:std::future的析构函数必须阻塞的安全性/正确性是否有任何原因?如果它只阻塞在get上还不够吗,否则,如果我对返回值或异常不感兴趣,那它只是一劳永逸? 最佳答案

c++ - 为什么我应该使用 std::async?

我正在尝试深入探索新C++11标准的所有选项,在使用std::async并阅读其定义时,我注意到两件事,至少在linux下使用gcc4.8.1:它被称为async,但它有一个真正的“顺序行为”,基本上在你调用与你的异步函数foofuture的行中/em>,程序会一直阻塞,直到foo的执行完成。它依赖于与其他库完全相同的外部库,以及更好的非阻塞解决方案,这意味着pthread,如果你想使用std::async你需要pthread。在这一点上,我很自然地问为什么选择std::async而不是一组简单的仿函数?这是一个根本无法扩展的解决方案,您调用的future越多,您的程序响应速度就越慢。

javascript - async 函数 + await + setTimeout 的组合

我正在尝试使用新的异步功能,我希望解决我的问题能在未来帮助其他人。这是我正在工作的代码:asyncfunctionasyncGenerator(){//othercodewhile(goOn){//othercodevarfileList=awaitlistFiles(nextPageToken);varparents=awaitrequestParents(fileList);//othercode}//othercode}functionlistFiles(token){returngapi.client.drive.files.list({'maxResults':sizeRes

python - 多处理。池 : What's the difference between map_async and imap?

我正在尝试学习如何使用Python的multiprocessing包,但我不明白map_async和imap之间的区别。我注意到map_async和imap都是异步执行的。那么我什么时候应该使用其中一个呢?以及我应该如何检索map_async返回的结果?我应该使用这样的东西吗?deftest():result=pool.map_async()pool.close()pool.join()returnresult.get()result=test()foriinresult:printi 最佳答案 imap/imap_unordere

c++ - C++11 中的 async(launch::async) 是否会使线程池过时以避免昂贵的线程创建?

它与这个问题松散相关:Arestd::threadpooledinC++11?.虽然问题不同,但意图是一样的:问题1:使用您自己的(或第三方库)线程池来避免昂贵的线程创建是否仍然有意义?另一个问题的结论是,您不能依赖std::thread进行池化(它可能会或可能不会)。但是,std::async(launch::async)似乎有更高的机会被池化。它不认为它是由标准强制的,但恕我直言,如果线程创建速度很慢,我希望所有好的C++11实现都会使用线程池。只有在创建新线程成本低廉的平台上,我希望它们总是产生一个新线程。问题2:这只是我的想法,但我没有事实可以证明。我很可能弄错了。这是有根据的

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

在使用C++11的线程模型时,我注意到std::packaged_tasktask([](inta,intb){returna+b;});autof=task.get_future();task(2,3);std::cout和autof=std::async(std::launch::async,[](inta,intb){returna+b;},2,3);std::cout似乎做同样的事情。我知道如果我用std::launch::deferred运行std::async可能会有很大的不同,但在这种情况下是否存在?这两种方法有什么区别,更重要的是,我应该在哪些用例中使用其中一种?

objective-c - 主队列上的 dispatch_sync 与 dispatch_async

请耐心等待,这需要一些解释。我有一个类似于下面的函数。上下文:“aProject”是一个名为LPProject的核心数据实体,带有一个名为“memberFiles”的数组,其中包含另一个名为LPFile的核心数据实体的实例。每个LPFile代表磁盘上的一个文件,我们要做的是打开每个文件并解析其文本,寻找指向其他文件的@import语句。如果我们找到@import语句,我们希望找到它们指向的文件,然后通过添加与代表第一个文件的核心数据实体的关系来将该文件“链接”到该文件。由于所有这些都可能在大文件上花费一些时间,因此我们将使用GCD在主线程之外完成。-(void)establishImp

objective-c - performSelectorOnMainThread : and dispatch_async() on main queue? 有什么区别

我在修改线程内的View时遇到问题。我尝试添加一个subview,但显示需要大约6秒或更长时间。我终于让它工作了,但我不知Prop体如何。所以我想知道它为什么起作用以及以下方法之间有什么区别:这有效-立即添加了View:dispatch_async(dispatch_get_main_queue(),^{//someUImethodsej[viewaddSubview:otherView];}这需要大约6秒或更长时间才能显示:[viewControllerperformSelectorOnMainThread:@selector(methodThatAddsSubview:)withO

python - multiprocessing.Pool : When to use apply, apply_async 或映射?

我还没有看到关于Pool.apply用例的明确示例,Pool.apply_async和Pool.map.我主要使用Pool.map;别人的优点是什么? 最佳答案 在Python的旧时代,要调用带有任意参数的函数,您可以使用apply:apply(f,args,kwargs)apply在Python2.7中仍然存在,但在Python3中没有,一般不再使用。如今,f(*args,**kwargs)是首选。multiprocessing.Pool模块尝试提供类似的接口(interface)。Pool.apply与Pythonapply类似