- 269 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 11:37:48 ]
- Collection系(例えばQueue)でロックされた状態で処理を行いたいとき
1.lock(独自のロックオブジェクト) 2.lock(対象.SyncRoot) 3.Queue.Synchronized(対象) とか考えられるんですが 使い分けの方法がわからない 1・・・コレクションだけではなくその他の変数やオブジェクトもロックしたいときにまとめて一回でやりたいから使うかなと 2、3 この違いは一体何なのか教えてほしいです。 そして Queue.Synchronized でMSDN調べたら 同期されている (スレッド セーフな) Queue ラッパーを返します とありますが、型が同じということだけはわかりますがこれはコピーされたオブジェクトなのかそれとも元の本体そのものなのか・・・ 予想すると 3のラッパーはオブジェクトのディープコピーをかえしてきて読み取り専用的に扱う 削除なんかは3の操作ではできないから1,2の方法を使って要素を削除したり こんな考え方でいいのでしょうか?
|

|