不同线程的 GenericList 用法
GenericList usage with different threads
我想问一下关于不同线程使用通用列表的问题,我有通用列表对象,同时不同的线程可以添加、删除、获取或更新该列表。我尝试用下面的代码来处理这种情况。那样行吗 ?还是我遗漏了什么?
public static TSource FirstOrDefaultThreadSafe<TSource>(this List<TSource> source, Func<TSource, bool> predicate) where TSource:new()
{
TSource result=new TSource();
lock (source)
{
result = source.FirstOrDefault(predicate);
}
return result;
}
public static void AddThreadSafe<T>(this List<T> sourceList, T item)
{
lock (sourceList)
{
sourceList.Add(item);
}
}
是的。那会没事的。
让我给你一些建议,如果 generinc list 读取(查找或获取操作)比写入(添加或更新操作)更频繁,请使用读写锁。
这样效率更高,更具战略性。
我想问一下关于不同线程使用通用列表的问题,我有通用列表对象,同时不同的线程可以添加、删除、获取或更新该列表。我尝试用下面的代码来处理这种情况。那样行吗 ?还是我遗漏了什么?
public static TSource FirstOrDefaultThreadSafe<TSource>(this List<TSource> source, Func<TSource, bool> predicate) where TSource:new()
{
TSource result=new TSource();
lock (source)
{
result = source.FirstOrDefault(predicate);
}
return result;
}
public static void AddThreadSafe<T>(this List<T> sourceList, T item)
{
lock (sourceList)
{
sourceList.Add(item);
}
}
是的。那会没事的。 让我给你一些建议,如果 generinc list 读取(查找或获取操作)比写入(添加或更新操作)更频繁,请使用读写锁。 这样效率更高,更具战略性。