c ++ pthread和指向函数的指针

时间:2013-06-25 22:12:26

标签: c++ pointers pthreads function-pointers

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

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

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

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

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

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

我按照以下步骤操作:

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

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

1 个答案:

答案 0 :(得分:1)

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

让我们来看看情景:

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

如果“停止”意味着某些逻辑事物,保持功能完好,并且来电者不接触任何东西,这可能有用。但如果它意味着卸载b.DLL,你就会遇到问题。

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

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