除了回调函数之外,还有什么方法可以让我们实现异步操作吗?

Is there any way that allow us to achieve asynchronous operation other than callback function?

提问人:Ryan 提问时间:10/14/2023 最后编辑:Pete BeckerRyan 更新时间:10/14/2023 访问量:56

问:

主线程告诉系统做某事,并注册一个回调函数。然后主线程继续做一些其他工作。任务完成后,系统将调用 。和主线程可以并发运行。这就是我对回调函数的了解。handler()handler()handler()

但我有两个问题:

  1. 在上面的例子中,将对任务的结果做出响应,并完成其余的工作。如果我们希望主线程响应任务的完成,但在任务完成之前仍然可以做一些其他工作,我们能这样做吗?handler()

  2. 除了回调函数之外,我们还可以使用其他技术来实现异步操作吗?

谢谢你的帮助。:)

异步 并发 回调 asynccallback

评论

0赞 Pete Becker 10/14/2023
std::async,例如。C++ 中有很多同步技术。
0赞 Ryan 10/14/2023
谢谢。它不限于任何语言。我实际上想问一下基本原则。@PeteBecker
1赞 Jakkapong Rattananen 10/14/2023
主题答案:否,因为线程是异步操作原语(其他异步操作在此上实现)无论如何都需要回调。答案 1:有办法,但很难解释。这取决于您的程序设计。你需要什么,它类似于任务系统答案 2:不,因为我的第一个答案,但您可以实现自己的机制来隐藏回调。
1赞 Marek R 10/14/2023
C++20 协程。
0赞 Solomon Slow 10/14/2023
仅供参考,“回调”是由您的代码使用的库调用的任何函数。即使在单线程、完全同步的应用程序中,也可以有回调。

答: 暂无答案