gpt4 book ai didi

c++ - 如何在等待时保持消息推送?

转载 作者:太空狗 更新时间:2023-10-29 22:53:43 25 4
gpt4 key购买 nike

我有一个基于消息泵线程池架构的应用程序。每当有可能阻塞的操作时,它都被实现为“完成/触发 evnet 时的回调”操作,因此它不会停止执行线程。

虽然这种技术适用于大多数情况,但在某些情况下它会变得非常不方便并使代码过于复杂。

我希望能够做的是,以一种透明的方式在等待的同时继续处理事件,而不会将函数分解为等待前/后等待的部分。

我应该怎么做?

我有两个选择:

  1. 在等待时从正在执行的函数中运行消息循环。
  2. 在等待时创建一个新的工作线程,并在恢复时(以适当的方式)终止它。

这两种选择都有其缺陷,仅举几例:

对于 1:

  • 可能会导致堆栈溢出。
  • 可能会陷入僵局。
  • 如果内部消息导致等待第二个事件完成,而外部事件同时完成,则外部函数在第二个事件完成之前无法继续,这种情况可能会扩大。

选项 2 最终可能会创建越来越多的线程。

当然,可能还有其他我没有想到的选择。

编辑: 语言是 C++,因此函数无法以简单(可移植?)的方式步出和步进。平台是 Windows (API),尽管我认为它不相关。

最佳答案

对于可移植的 C++,这是行不通的,但既然您已经提到您的平台是 Windows,为什么不使用 MsgWaitForMultipleObjects ?它的目的是让您完全按照您的问题进行操作 - 在等待时不断发送消息。

关于c++ - 如何在等待时保持消息推送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1022808/

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