rbo*_*boy -1 c# locking object
我认为只要对对象的引用或对象本身不改变,Monitor.Enter 就可以对对象的引用起作用。
这是我的简单案例,我有一个名为 QueueManager 的类,其中有一个队列。在操作队列之前,我使用此对象队列来使用 Monitor.Lock 进行锁定。我尝试了在队列对象上调用 Monitor.Lock 的简单测试,但失败了。知道为什么吗?
public class QueueManager
{
private List<ConversionJob> _jobQueue = new List<ConversionJob>();
public QueueManager()
{
}
public List<ConversionJob> Queue
{ get { return _jobQueue; } }
}
public class Main
{
private QueueManager qMgr = new QueueManager();
public Main()
{
try
{
Monitor.Enter(qMgr.Queue);
throw new Exception();
}
catch (Exception)
{
Monitor.Enter(qMgr.Queue);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不会死锁!我不明白为什么它不会陷入僵局。我尝试了这个,因为我怀疑锁被盗了,所以我把这个测试代码放进去,我很惊讶。
归档时间: |
|
查看次数: |
1724 次 |
最近记录: |