0

我的项目有几个地方需要处理异步。所以我想学习如何在 C 中实现异步。

4

1 回答 1

0

我在“过去”做过一些异步编程。

我使用的方法是将每个异步操作表示为HANDLE,如果操作没有固有的HANDLE. 然后我为应用程序创建了一个主循环,它基本上只是调用WaitForMultipleObjects和执行完成回调。

这种方法有几个问题:

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