|
|
1
2
我相信你对这个信息的解释是正确的。我能找到的唯一参考资料如下。正如作者所说,堆栈跟踪是一个很好的线索
|
|
|
2
2
条款: 应用程序验证程序检测到获取关键节锁的线程正在尝试退出,而该节仍处于锁定状态 这并不是抱怨那条线 创建 临界段,现在正在终止。这与谁创建和销毁该部分无关。这是抱怨,而且非常合理地说,这条线 |
|
|
3
1
与COM对象等野兽相反,生命周期的关键部分并不绑定到某个线程。关键部分分两个阶段构建:创建时,它们仅由几个结构组成。当两个或多个线程发生争用时,将创建一个内核互斥体来正确处理同步。结构和互斥体都可以由任何线程创建、访问和破坏,不管是不是创建关键部分的线程。 为了回答您的问题,上面的内容意味着您在一个线程中创建CS并在另一个线程中销毁CS应该没有问题。然而,这可能意味着设计存在一些问题。如果你还没有这样做,考虑用一个类来初始化CS,它将在构造函数中初始化CS,并在它的析构函数中销毁它(MFC的cMealLeChank这样做)。然后,在比使用它的范围更高的范围(全局、静态类成员,等等)上创建包装器。应该使创建和清理更容易。 最后,关于错误消息本身——是否有可能被删除的线程已经进入CS而没有机会离开它(由于异常或其他原因)?如果是这样的话,你会收到一条看起来很奇怪的信息,指出一个真正的问题。 |
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 1 年前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 1 年前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 1 年前 |
|
|
András Takács · Python多线程问题 2 年前 |
|
|
András Takács · Python多线程错误 2 年前 |