【发布时间】:2014-01-21 11:39:33
【问题描述】:
我有一个相当简单的例子,两个线程与相同的数据结构交互。线程托管在它们自己负责的类中。假设这些是 Alfons 类和 Belzebub 类:
class Alfons {
public Mutex listMutex = new Mutex();
private void ProcessListInfo()
{
listMutex.WaitOne();
//
// ... Process multi-access list stuff ...
//
listMutex.ReleaseMutex();
}
}
class Belzebub {
private Alfons mCachedAlfonsReference;
private void ProcessListInfoDifferently()
{
mCachedAlfonsReference.listMutex.WaitOne();
//
// ... Process multi-access list stuff in a different fashion ...
//
mCachedAlfonsReference.listMutex.ReleaseMutex();
}
}
我的问题是,像这样引用 Mutex 是否会产生并发问题,或者是否建议这样做。有没有更好的方法来做到这一点,例如,我是否应该缓存互斥体引用而不是通过引用访问它。
【问题讨论】:
-
是的!非常感谢!事实上,我想将你们俩都标记为答案(dcastro 和 acarlon)。多亏了这些,我最终对我的数据类型进行了一些重组:)
-
很高兴能提供帮助 - dcastro 是第一个,非常公平。
标签: c# concurrency mutex