2016-04-09 2 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

はい。それは大丈夫でしょう。 私はあなたにいくつかのアドバイスをしてみましょう。もし頻繁に読み込み(検索または操作を行う)よりも頻繁に書き込み(追加または更新操作)するなら、読み書きロックを使用してください。 それはより効率的でより戦略的になるでしょう。

関連する問題