我有一个关于c ++函数指针的问题。
我的架构中有3个模块:模块A ,模块B 和模块C 。
模块B和C将由模块A创建。
模块B具有决定何时停止所有模块的逻辑。
为此,我认为模块A可以将指向函数的指针传递给模块B. 在此功能中,模块A将停止模块B,C然后自己。 这些模块有一个pthread。
您认为这可能是一个不错的选择吗?
我按照以下步骤操作:
如何在表单B的构造函数中传递函数指针?
答案 0 :(得分:1)
这个想法听起来不错,但是你需要一些变速箱。
让我们来看看情景:
B调用A :: StopAll() A :: StopAll()杀死模块B. 我们在这个函数中返回模块已杀死。
如果“停止”意味着某些逻辑事物,保持功能完好,并且来电者不接触任何东西,这可能有用。但如果它意味着卸载b.DLL,你就会遇到问题。
目前还不清楚线程如何播放,可能会遇到类似的问题。
如果你有一些消息泵,从B触发的功能应该只是向自己发送一条消息并退出以允许在B中完成调用。然后消息执行只能开始查杀。如果您有多个线程而不是消息泵,则可能需要提醒另一个线程。