描画データの管理とマルチスレッド処理

少し前、回答したもの

対話してやっと利用状況がつかめた感じ。描画というのはゲームのようなFPSループで書くタイプのスタイルだったようだ。これがGUIのイベントモデルか、Webレンダリングかで解法は変わる。


この場合でも、FPS描画でプライマリに使うコレクションオブジェクトはやはりロックすべきではない。キーと値のペアを持つキューを用意し、マルチスレッドからは一旦そのキューに書き込むのだ。FPSループの頭などで、一度キューをロックしてキュー内のデータをマップに移すのだ。


あと、コピーが現実的じゃないと書いてあるが、描画の間ずっとロックし続けるほうが現実的ではない。もしかすると、一描画内でのコレクションデータの一貫性は必要しないというのであれば、使うときだけロックすればいいかもしれないけど、普通はそういう仕様はまずない。コレクションデータの描画が一箇所だけならそのコードではそれでいいけど、もう一箇所書く場所が増えるような変更が起きるだけで、コードを大きく変える必要が出るので設計的によくない。