gpt4 book ai didi

c++ - 线程启动时通知对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:29 30 4
gpt4 key购买 nike

我有一个对象 A,当某个线程启动或死亡时,它应该被通知(A::Notify() 方法)。
假设这个线程动态加载我的一些 DLL 文件(我可以写)。
我相信我应该编写此 DLL 的 dllMain 函数,但我不确定如何从此函数获取对 A 对象的引用,以便我可以运行它的 Notify() 方法。
有什么想法吗?

最佳答案

DLL 在每个进程中加载​​一次。加载后,只要在进程中创建线程,就会自动调用其 DllMain。假设 A 是一个全局变量,您可以执行以下操作:

  1. 首次加载 DLL 后,调用一个导出函数,该函数将全局指针设置为 DLL 中的 A
  2. 每当以附加线程为由调用 DllMain 时,通过 DLL 中的指针调用 A。

另一种选择是在您的 exe 中启动消息循环,并将其线程 ID 传递给 DLL。然后,每当线程附加到 DLL 时,都会向消息循环发送一条消息,其中包含已创建线程的详细信息。这是一个稍微复杂一些的解决方案,但它会让您不必让 DLL 熟悉 A 类。

关于c++ - 线程启动时通知对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152900/

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