在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对象来调度异步回调,并需要手工管理工作线程.但原则上这是一个非常好的匹配你所要求的.
总结以上是内存溢出为你收集整理的c期货/承诺像javascript?全部内容,希望文章能够帮你解决c期货/承诺像javascript?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)