0

我有一个关于 c++ 函数指针的问题。

我的架构中有 3 个模块:模块 A模块 B模块 C

模块 B 和 C 将由模块 A 创建。

模块 B 具有决定何时停止所有模块的逻辑。

为此,我认为模块 A 可以将指向函数的指针传递给模块 B。在此函数中,模块 A 将停止模块 B、C,然后是他自己。这些模块有一个 pthread。

你认为这可能是一个不错的选择吗?

我按照以下步骤操作:

  • 我在表单 A 上创建了一个停止方法;
  • 在模块 B 中,当我把它停止所有模块时,我调用作为指针传递的函数。

如何在表单 B 的构造函数中传递函数指针?

4

1 回答 1

1

这个想法听起来不错,但是你需要一些变速箱。

让我们播放这个场景:

B 调用 A::StopAll() A::StopAll() 杀死模块 B 我们在这个函数中返回模块被杀死。

如果“停止”意味着一些合乎逻辑的事情,这可能会起作用,保持功能完整,并且调用者避免触摸任何东西。但如果这意味着像卸载 b.DLL,你就会遇到问题。

目前还不清楚线程如何播放,可能有类似的问题。

如果你有一些消息泵,从 B 触发的函数应该只是向自己发布一条消息并退出以允许在 B 中完成调用。然后消息执行应该只开始杀死。如果您有多个线程而不是消息泵,您可能需要提醒不同的线程。

于 2013-06-25T22:21:44.457 回答