C# ConcurrentCollections
ConcurrentCollectionsでスレッドセーフなデータ操作ができる。
ただし、RaceCondition(メソッド呼び出し間に、別スレッド・プロセスの操作により値が書き換わる現象)に注意する。
言語が違っても考え方は同じと思うので、メモしておく。
ConcurrentDictionary
一般的な用途ならこれで十分。
配列として使う場合はスレッドセーフと引き換えに性能が犠牲になる。
- TryGetValue
- TryAdd
- TryUpdate
- TryRemove
- GetOrAdd
- AddOrUpdate
Parallel.ForEach
ループを分割して処理を行う。
ブロック内の処理負荷が大きいほど効果がかる。
こういうものもあるんだなということで。