【发布时间】:2013-07-27 02:29:22
【问题描述】:
我知道 StackWalk64 像所有 dbghelp 函数一样是单线程的,正如 MSDN 文档中明确说明的那样。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms680650(v=vs.85).aspx
“所有 DbgHelp 函数,例如这个,都是单线程的。因此,从多个线程调用此函数可能会导致意外行为或内存损坏。为避免这种情况,您必须同步来自多个线程的所有并发调用这个函数不止一个线程。”
但是,CaptureStackBackTrace 的 MSDN 文档,http://msdn.microsoft.com/en-us/library/windows/desktop/bb204633(v=vs.85).aspx 并没有说明 CaptureStackBackTrace 是否是单线程的。
我们非常感谢您快速回答。
【问题讨论】:
-
您的意思可能是线程安全而不是单线程。您真的不在乎 CaptureStackBackTrace 是否使用多个线程来完成其任务。您关心的是从多个线程调用是否安全。
-
我认为
StackWalk64()如果它正在遍历调用线程的堆栈,它将是线程安全的。但如果它正在遍历另一个线程的堆栈,那么它需要同步是有道理的。
标签: c++ winapi stack-trace callstack backtrace