【发布时间】:2009-04-15 18:54:02
【问题描述】:
我仍然很困惑...当我们写这样的东西时:
Object o = new Object();
var resource = new Dictionary<int , SomeclassReference>();
...并且有两个代码块在访问resource 时锁定o...
//Code one
lock(o)
{
// read from resource
}
//Code two
lock(o)
{
// write to resource
}
现在,如果我有两个线程,其中一个线程执行从 resource 读取的代码,另一个执行写入它的代码,我想锁定 resource,这样当它被读取时,作者将不得不等待(反之亦然 - 如果正在写入,读者将不得不等待)。锁结构会帮助我吗? ...或者我应该使用其他东西吗?
(我在这个例子中使用Dictionary,但可以是任何东西)
我特别关注两种情况:
- 两个线程试图执行同一行代码
- 两个线程试图在同一个资源上工作
lock 会在这两种情况下提供帮助吗?
【问题讨论】:
-
@SilverHorse:很抱歉踩到你的编辑 - 回去添加标签,但没有意识到你同时编辑了!
标签: c# multithreading concurrency