初歩的な質問ですいません。
現在、マルチスレッド環境においてSortedListの操作に対して排他制御を実装しようと考えております。
調べたところ↓のようにSystem.Collections.ICollectionにキャストし、SyncRootを用いる手法が一般的なようです。
C#
1// 対象のSortedList 2private SortedList<string, Hoge> _hogeList = new SortedList<string, Hoge>(); 3 4// 処理部分 5public Hoge AddHoge(string keyStr, Hoge hoge) 6{ 7 lock(((System.Collections.ICollection)_hogeList).SyncRoot) 8 { 9 // _hogeListに対する操作 10 // _hogeList.Add(keyStr, hoge); 11 } 12}
ここで疑問に思ったのが、わざわざlock時にSyncRootを使用する必要があるのかという点です。
C#
1 2// _hogeListをlockステートメントに使用 3lock(_hogeList) 4{ 5 // _hogeListに対する操作 6} 7
これでは何か問題があるのでしょうか?(恐らく何かしらあるとは思うのですが...)
わざわざSyncRootを用いる理由等をお教えいただければと思います。
以上、宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/11 02:44