终于{_someLock.EnterWriteLock();有意义吗?

时间:2013-12-02 08:30:39

标签: c# .net multithreading locking

我在一个大项目的代码中看到了这样的模式:

try {} finally { _someLock.EnterWriteLock(); }

try
{
...
}
finally
{
   _someLock.ExitWriteLock();
}

最终进入锁定是否有任何意义?

===================

更新: 我找到了这种模式的来源。

http://chabster.blogspot.com/2013/07/a-story-of-orphaned-readerwriterlockslim.html。你能说什么?

2 个答案:

答案 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)

不,它没有。也许如果你想混淆你的代码