c00*_*0fd 11 .net c# locking exception
比方说,如果我在C#代码上有以下块:
public class SynchedClass
{
public void addData(object v)
{
lock(lockObject)
{
//Shall I worry about catching an exception here?
//Do the work
//arr.Add(v);
}
}
private List<object> arr = new List<object>();
private object lockObject = new object();
}
Run Code Online (Sandbox Code Playgroud)
我应该尝试捕获lock块内的异常吗?(我主要担心的是锁内部可能会引发异常,这会阻止锁被"解锁".)
ale*_*lex 22
当异常从锁定块中逃逸时,将释放锁定.
那是因为lock(){...}编译器大致翻译成:
Monitor.Enter(obj);
try{
// contents of the lock block
}finally{
Monitor.Exit(obj);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7412 次 |
| 最近记录: |