草庐IT

dispatch_async

全部标签

c++ - C++ 中类成员上的类和 std::async

我正在尝试编写一个类成员,它可以并行多次调用另一个类成员。我写了一个简单的问题示例,甚至无法编译它。我在调用std::async时做错了什么?我想问题在于我如何传递函数。#include#includeusingnamespacestd;classA{inta,b;public:A(inti=1,intj=2){a=i;b=j;}std::pairdo_rand_stf(intx,inty){std::pairret(x+a,y+b);returnret;}voidrun(){std::vector>>ran;for(inti=0;ittt=ran[i].get();cout编译:g+

c++ - 关于 std::async 与 std::launch::async 参数启动的线程的混淆

我对std::async函数有点困惑。规范说:asynchronousoperationbeingexecuted"asifinanewthreadofexecution"(C++11§30.6.8/11).现在,这是什么意思?在我的理解中,代码std::futurefut=std::async(std::launch::async,pow2,num);应该在一个新线程上启动函数pow2并将变量num按值传递给线程,然后在将来的某个时间,当函数完成时,放置fut中的结果(只要函数pow2具有类似doublepow2(double);的签名)。但是规范声明“好像”,这让整个事情对我来说有

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

Golang 事件 : EventEmitter/dispatcher for plugin architecture

在Node.js中,我能够相当轻松地制作WordPress克隆,使用EventEmitter复制并在CMS核心中构建一个钩子(Hook)系统,然后插件可以附加到该核心。我现在需要为我的CMS编写并移植到Go的相同级别的可扩展性和核心隔离。基本上我现在已经完成了核心,但为了使其真正灵活,我必须能够插入事件(钩子(Hook))并让插件附加到这些钩子(Hook)上并具有附加功能。我不关心重新编译(动态/静态链接),只要您不必修改核心来加载插件-CMS核心永远不应该被修改。(如WP、Drupal等)我注意到有一些相当未知的项目,试图在Go中实现事件,看起来有点类似于Node.js中的Event

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可能会有很大的不同,但在这种情况下是否存在?这两种方法有什么区别,更重要的是,我应该在哪些用例中使用其中一种?