不同线程

时间:2016-04-09 06:34:52

标签: c# multithreading task-parallel-library generic-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);               
        }
    }

1 个答案:

答案 0 :(得分:2)

是。那会没事的。 让我给你一些建议,如果generinc列表更频繁地读取(查找或获取操作)而不是写入(添加或更新操作),请使用读写锁定。 这将更有效,更具战略性。