8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

线程钩子函数

Zeus 2月前

44 0

我有两个线程 f1() 和 f2(),如何让一个函数在每次唤醒线程运行时调用 g()?例如,在线程 f1() 启动之前,调用并返回 g(),然后运行 ​​f1(),然后

我有两个线程 f1() 和 f2(),我怎样才能让一个函数说 g() 在每次唤醒线程运行时被调用?例如,在线程 f1() 启动之前,调用并返回 g() 并运行 f1(),然后当 f2() 被激活且 f1() 进入休眠状态时,在 f2() 运行之前调用 g(),依此类推……无论线程是并发运行还是并行运行,我只想在线程激活点添加一个钩子函数 g!

谢谢。

帖子版权声明 1、本帖标题:线程钩子函数
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Zeus在本站《multithreading》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 你可以用协作式多线程轻松实现这一点。不确定如何使用抢占式多线程实现这一点 — 因为

  • 如果您在嵌入式设备上使用 RTOS,您通常可以访问线程调度程序的源代码,并可以在那里编写钩子。如果您使用的是 Linux、Windows 或 macOS 等常规操作系统,我想您就没那么幸运了。

  • 了解 std::mutex、std::unique_lock 和 std::condition_variable(最后一个,尽管它的名字更像是线程间信号)。然后,您可以使用条件变量来发出信号,表示您已进入线程(并设置了某些状态),其他代码可以在此唤醒

  • 您可以在创建和销毁线程时请求回调。我不知道有任何基础结构允许您在线程被安排运行时安装回调。

  • Enzo 2月前 0 只看Ta
    引用 6

    @prapin,提到 Linux 并说您无法根据自己的需求对其进行自定义,这令人惊讶。内核及其周围的一切都是开源的,因此您绝对可以。无论如何,这个问题带有 \'winapi\' 标签,这意味着 MS Windows。

  • 总结一下,两种状态之间的转换在编程时应该是透明的, winapi 目前也不支持这样的功能。你已经知道在api层面上是不可行的。

返回
作者最近主题: