続・鳩丸高速化計画その9・泥沼化
2004年1月2日(金曜日)
続・鳩丸高速化計画その9・泥沼化
- 鳩丸 URN 廃止関係で大量のバグを修正。
- えび日記・見出し一覧のバグを修正。これは高速化とは全く関係なくて、年明けになると発生する (正確には、最新の日記の DateTime.Month の値が 1 だと発生する) というバグでした。
- ログを保存する処理を System.Threading.ThreadPool.QueueUserWorkItem() で別スレッドに。
System.Threading.ThreadAbortException はローカルでは全く再現せず、完全に泥沼化。
NameObjectCollectionBase クラスの説明には以下のように書かれているので……
コレクションの列挙処理は、本質的にはスレッド セーフな処理ではありません。コレクションが同期されている場合でも、他のスレッドがそのコレクションを変更する可能性はあり、そのような状況が発生すると列挙子は例外をスローします。列挙処理を確実にスレッド セーフに行うには、列挙中にコレクションをロックするか、他のスレッドによって行われた変更によってスローされる例外をキャッチします。
HatomaruDataHolder の内容が他のスレッドによって変更されると System.Threading.ThreadAbortException がスローされるのかなぁと思ったりするわけですが、列挙処理してないし……。試しに BaseGet() を呼ぶときにロックしてみたりしましたが、再現しない (というか、おそらく同時アクセスが必要なのでなかなか再現できない) のでこれで良いのかどうか何とも判断しがたく。
- 「続・鳩丸高速化計画その9・泥沼化」にコメントを書く
関連する話題: C# / プログラミング / えび日記 / hatomaru.dll / 鳩丸高速化計画
- 前(古い): 続・鳩丸高速化計画その8・コメントインデクス化
- 次(新しい): 続・鳩丸高速化計画その10・方向転換