2013-07-26 7 views
0

StackWalk64는 MSDN 설명서에 명시되어 있기 때문에 모든 dbghelp 기능과 마찬가지로 단일 스레드라는 것을 알고 있습니다. http://msdn.microsoft.com/en-us/library/windows/desktop/ms680650(v=vs.85).aspxCaptureStackBackTrace는 단일 스레드입니까?

"이 같은 모든 DbgHelp 함수는 단일 스레드이므로이 함수에 둘 이상의 스레드에서 호출하면 예기치 않은 동작이나 메모리 손상이 발생할 수 있습니다.이 문제를 방지하려면 모든 동시 호출을 동기화해야합니다 두 개 이상의 스레드에서이 함수로. "

그러나 CaptureStackBackTrace에 대한 MSDN 설명서는 CaptureStackBackTrace가 단일 스레드인지 여부를 나타내지 않으므로 http://msdn.microsoft.com/en-us/library/windows/desktop/bb204633(v=vs.85).aspx은 표시하지 않습니다.

빠른 답변을드립니다.

+0

아마도 스레드 안전하고 단일 스레드가 아닙니다. CaptureStackBackTrace가 다중 스레드를 사용하여 작업을 수행하는지는 상관하지 않습니다. 여러 스레드에서 호출하는 것이 안전한지 신경 써야합니다. – agbinfo

+0

나는'StackWalk64()'이 호출하는 쓰레드의 스택을 걷고 있다면 thread-safe하다고 생각한다. 그러나 다른 스레드의 스택을 걷는 중이라면 동기화가 필요할 것입니다. –

답변

1

다른 언급이 없으므로 CaptureStackBackTrace은 스레드 세이프라고 가정하는 것이 안전합니다. 이것이 Windows API 함수의 기본 설정입니다. 달리 언급되지 않는 한, 스레드 안전합니다.

+6

'StackWalk64()'와는 달리,'CaptureStackBackTrace()'는 다른 쓰레드의 스택을 걷는 것을 지원하지 않고 오직 호출 쓰레드의 스택만을 지원합니다. 따라서 호출 스레드가 자체와 동기화 할 필요가 없으므로 스레드로부터 안전합니다. –

관련 문제