- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想检查以下代码是否可以抵抗 ThreadAbortException 并且不会导致孤儿锁。如果不是,避免孤儿锁的最佳模式是什么?
ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
public void DoStaff()
{
_lock.EnterWriteLock();
//Is this place where ThreadAbotException can corrupt my code, or is there JIT optimalization which prevent this from happening???
try
{
...
}
finally
{
_lock.ExitWriteLock();
}
}
根据以下链接 http://chabster.blogspot.cz/2013/07/a-story-of-orphaned-readerwriterlockslim.html ,有(或至少有)可能的方法来创建孤立锁,但我运行了一段时间的示例代码但没有任何运气。
我正在使用 .NET 4.0
Debug 和 Release 中的行为有什么区别吗?
最佳答案
是的,ThreadAbortException
可能会在那里发生,在这种情况下,不会输入 try
,因此您永远不会退出写锁。
这个问题没有好的通用解决方案。这就是为什么 Eric Lippert(以及其他人)说 Locks and exceptions do not mix .
您特别询问了 ThreadAbortException
,这让我相信您正在考虑使用 Thread.Abort
在您的应用程序中进行某种线程控制。我劝你重新考虑。如果你想要取消线程的能力,你应该使用 Cancellation或类似的东西。在最可怕的情况之外的任何其他情况下使用 Thread.Abort
都是一个非常糟糕的主意。它当然不应该成为您程序整体设计的一部分。
关于c# - ReaderWriterLockSlim 是否能抵抗 ThreadAbortException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821549/
这是一个已知问题,当您更新 Java、JDK 或 JRE 时,在 Windows 上 Eclipse 可能无法启动,因为它指向过时的 JDK/JRE 文件夹。修复相对简单,已在 here 等多个线程上
我使用 cookie 来实现“记住我”选项以在我的网站上登录。设置 cookie 工作正常。取消设置曾经有效。然后我制作了一个新版本的网站,带有httponly cookies;注销在本地主机上工作,
我是一名优秀的程序员,十分优秀!