这可能是一个愚蠢的问题,但我是否需要使用和分配一个锁,或者我可以简单地返回结果。我需要使用和分配锁吗?
例如:
我有一个返回的文件名的IEnumerable列表中的私人助手方法。它使用一个锁来确保该方法在迭代m_transfers集合时保证线程安全。
我需要一个任务......
IEnumerable<String> updated;
lock (m_transfers.Lock)
{
updated = m_transfers.Values.Where(transfer => transfer.Updated)
.Select(transfer => transfer.Filename);
}
return updated;
或者,我可以做
lock (m_transfers.Lock)
{
return updated = m_transfers.Values.Where(transfer => transfer.Updated)
.Select(transfer => transfer.Filename);
}
更重要的是:所有其他访问'm_transfers.Values'是否也被守卫?看起来你可能根本不需要'lock()'。 –