gpt4 book ai didi

c++ - DbgHelp 函数的同步要求

转载 作者:行者123 更新时间:2023-11-30 19:16:11 24 4
gpt4 key购买 nike

我最近实现了一个实用程序来使用 MiniDumpWriteDump 编写用户模式转储( Debug Help Library 的一部分)。实现被分成它自己的进程。目标进程可以启动此实用程序并与其通信以触发写入小型转储。

这一切都按预期工作。不过,我不确定如何解释 MiniDumpWriteDump 的并发规则。 :

All DbgHelp functions, such as this one, are single threaded. Therefore, calls from more than one thread to this function will likely result in unexpected behavior or memory corruption. To avoid this, you must synchronize all concurrent calls from more than one thread to this function.

上面是否指的是从不同线程到单个进程的调用?或者,如果在不同进程中调用 MiniDumpWriteDump(例如,当每个目标进程启动自己的实用程序进程时),并发调用是否也需要同步?

最佳答案

问题出在库中:“所有 DbgHelp 函数(例如这个函数)都是单线程的”

因此,调用此库的任何进程都必须确保只有一个线程同时使用 DbgHelp 函数。

只要在使用DbgHelp之前使用锁即可,也就是说,如果你使用DbgHelp的程序是多线程的(否则没有问题)。

消除此限制的另一种方法是将(每个线程)上下文添加到DbgHelp库:您将所有(文件范围)静态C 结构中的 和(程序范围)全局 变量作为参数传递给所有库函数调用。

关于c++ - DbgHelp 函数的同步要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30892913/

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