我在一个大项目的代码中看到了这样的模式:
try {} finally { _someLock.EnterWriteLock(); }
try
{
...
}
finally
{
_someLock.ExitWriteLock();
}
最终进入锁定是否有任何意义?
===================
更新: 我找到了这种模式的来源。
http://chabster.blogspot.com/2013/07/a-story-of-orphaned-readerwriterlockslim.html。你能说什么?
答案 0 :(得分:2)
不,不。空尝试 / finally块即使在线程到达try
块时中止,也可以防止最终执行。
事实上,你的情况是有害。
考虑执行try
try
{
//Thread is here and abort requested
}
finally { _someLock.EnterWriteLock(); }//Aborted thread takes the lock!
try
{
...
}
finally
{
_someLock.ExitWriteLock();//Never gonna execute since thread is aborted. You're screwed.
}
答案 1 :(得分:1)
不,它没有。也许如果你想混淆你的代码