c期货/承诺像javascript?

前端之家收集整理的这篇文章主要介绍了c期货/承诺像javascript?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在写一些 javascript,我喜欢的环境之一是使用promises / futures来处理异步事件的方式.

在C中,您必须在未来调用.get,并阻止未来的结果可用,但在Javascript中可以编写.then(fn),并在结果准备就绪时调用函数.在最后的时间里,它与调用者的线程相同,所以没有线程同步问题要担心,至少与c中不一样.

我正在思考c –

auto fut = asyncImageLoader("cat.jpg");
fut.then([](Image img) { std::cout << "Image is now loaded\n" << image; });

有没有办法在c中实现这一点?显然,它将需要某种事件队列和事件循环来处理调度回调.我可能最终会编写代码来做大部分工作,但是想看看是否有任何方法可以轻松地使用标准设施来实现目标.

解决方法

对于即将到来的C17标准,std :: future的一个功能已经是 proposed.

Boost’s implementation of future(符合当前标准,但提供附加功能作为扩展)已经在较新版本(1.53或更高版本)中提供了该功能的一部分.

对于更为成熟的解决方案,请查看Boost.Asio library,这样可以方便地实现由future.then提供的异步控制流. Asio的概念稍微复杂一点,因为它需要访问一个中央的io_service对象来调度异步回调,并需要手工管理工作线程.但原则上这是一个非常好的匹配你所要求的.

原文链接:https://www.f2er.com/c/115651.html

猜你在找的C&C++相关文章