【发布时间】:2012-09-12 11:15:19
【问题描述】:
这可能是一个愚蠢的问题,但我是否需要使用和分配锁,或者我可以简单地返回结果。
例如:
我有一个私有帮助方法,它返回一个 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()。
标签: c# .net multithreading linq