2016-04-09 5 views
0

Я хотел бы задать вопрос об использовании общего списка с разными потоками, есть общие объекты списка, которые у меня есть, и в то же время различные потоки могут добавлять, удалять, получать или обновлять этот список. Я пытаюсь обработать эту ситуацию с помощью кода ниже. Это нормально ? или я что-то упускаю?Использование GenericList с различными потоками

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);    
     } 
    } 

ответ

2

Да. Что все будет в порядке. Позвольте мне дать вам несколько советов. Если список расширенного списка чаще читается (находить или получать операцию), чем писать (добавлять или обновлять операцию), используйте блокировку чтения-записи. Это будет более эффективно и стратегически.