【发布时间】:2009-11-19 13:32:12
【问题描述】:
我的程序中有以下代码:
EnterCriticalSection(&critsec[x]);
// stuff
LeaveCriticalSection(&critsec[x]);
它在 99.999% 的情况下都能正常工作,但有时似乎会留下一个句柄。现在我已经做了一些显而易见的事情,比如确保 x 在输入之间没有改变值,并确保“// stuff”中没有任何“return”或“break”,但我想知道是否可能有什么东西否则会导致进入/离开对留下句柄。可能是内存不足或操作系统中的某些计数器溢出或其他原因。
编辑:我是 C++ 的新手,该程序最近才从 C 转换过来。整个程序的任何地方都没有例外。
【问题讨论】:
-
你是如何确定剩下的句柄的?它可能是与 CriticalSections 根本无关的东西(而是来自“东西”代码块的句柄?)
-
我按照这部电影channel9.msdn.com/posts/jeff_dailey/… 中的指南进行操作(电影现在无法播放)。它使用windbg中的!htrace命令。
标签: c++ multithreading windows-xp