净线程 - 将一个线程锁定所有同步块单个锁定对象
问题描述:
private static Object _syncroot = new Object();
public void DoSomeWork()
{
// do some processing code
lock(_syncroot)
{
// process some shared data
}
// do some processing code
lock(_syncroot)
{
// do some further processing of shared data
}
}
中下面的代码片段如果此代码是由多个线程命中,如果线程A进入的第二个线程块锁定_syncroot,这是否也会有效锁定任何线程进入第一个同步块,直到线程A退出第二个同步块?
答
是的。线程A获得的_syncRoot上的锁定将阻止线程B获取对同一对象的锁定,直到线程A释放它为止。
如果你需要并发线程到从同一个对象读取(这是安全的,并发写入是事情变糟),然后看看System.Threading.ReaderWriterLockSlim。
感谢您的信息。 – Andrew 2010-06-25 14:44:17
没问题,只要点击大号复选标记,如果它回答你的问题:) – STW 2010-06-25 15:26:39