因此,App Verifier抛出此异常。根据我的收集,此消息的文本有些误导。问题似乎在于关键部分是由在破坏关键部分之前被破坏的线程创建的。

这是一个相对简单的修复程序,但是除了创建一个线程之外,没有人知 Prop 有线程的后果是如何破坏关键部分吗?有多危险?只是担心关键部分的手柄会“泄漏”还是会有更阴险的副作用?

其他一些信息:

  • 用C++编写的应用程序(当然,在Windows上)
  • 使用InitializeCriticalSelection
  • 创建的关键部分
  • 关键部分最终使用DeleteCriticalSection
  • 删除

    最佳答案

    我相信您对邮件的解释是正确的。我可以找到的唯一引用如下。正如作者所建议的那样,堆栈跟踪是一个很好的线索

  • http://jpassing.wordpress.com/2008/02/18/application-verifier-thread-cannot-own-a-critical-section/

  • 我仔细研究了一下,找不到任何无法在不同线程上创建和删除关键部分的特定原因。但是我确实想知道为什么要这样做吗?可以说,让一个线程拥有一个关键部分似乎是最佳实践。在线程之间移交关键部分会引入另一种通信方式和潜在的错误(可以做,只是更有趣)。

    09-11 19:25