デッドロック

検索スレッドを動かして,ほぼ同時に保存処理を行ったら止まったから「デッドロックだな」と思って,ものは試しと VisualStudio.NET さんにプロセスのアタッチをかけてもらったら「プロセスは ... かデッドロックの可能性があります」とか言われた.
で,実際にデバッガで追うと,本当にデッドロックが起こっていた.
どうやら検索スレッドが SendMessage してメインスレッド側が持つコントロールの設定をしようとしたときに,メインスレッドは「保存処理をしようとしたが検索スレッドがDBを操作しているのでクリティカルセクションにより停止」している状態で,検索スレッドも SendMessage の時点で停止してしまい,綺麗にデッドロックが起きた模様.
思い返せば BMan を作っていたときだろうか,あのときにもデッドロックに遭遇したんで,経験って素敵.(BMan はスレッドが3つくらいあったはず…)
自力でゲームを作るのも大切という話ですか,いや,ちょっと違うな(笑)
というわけで,マルチスレッドは苦手です.