gpt4 book ai didi

c - C++11 中的 async-future 模型或 C# 中的 async-await 有什么好的 C 实现吗?

转载 作者:行者123 更新时间:2023-11-30 18:00:34 25 4
gpt4 key购买 nike

我的项目有一些需要处理异步的地方。所以我想学习如何用C实现异步。

最佳答案

“过去”我已经完成了一些异步编程。

我使用的方法是将每个异步操作表示为一个HANDLE,如果该操作没有固有的HANDLE,则使用手动重置事件。然后,我为应用程序创建了一个主循环,该循环本质上只是调用 WaitForMultipleObjects 并执行完成回调。

这种方法有几个问题:

  • 这是相当资源密集型的。非常需要手动重置事件包装器。
  • 它是严格的单线程。但是,您可以修改方法以使用线程池;当我“过去”开发异步程序时,操作系统还没有提供线程池。
  • 仅限 64 个未完成的异步操作。我确实遇到了这个限制,并编写了我所谓的“事件多路分解器”来解决它。本质上,您只需根据需要添加线程,子线程共享一个“通知”HANDLE,该通知始终位于主线程等待的 64 个 HANDLE 中。

关于c - C++11 中的 async-future 模型或 C# 中的 async-await 有什么好的 C 实现吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com