東京行きですっかりくたびれたか、異常に眠る。午前中はずっと寝ていた。おかげで風邪引きかかっていたような気がしていたのが、直ったような。今回はスレッド対応の難しさについて考察する。複数のスレッドが存在する環境でGCを行う場合に面倒なのは同期と排他制御だ。機械的には判定できない。「どこからも参照されていない」かどうかを判定することも、それほど簡単ではない。リンクをたどることで到達可能なオブジェクトを「生きている」と判定している。生きているオブジェクト以外のオブジェクトはすなわち「死んでいる」わけだ。正確にスキャンできない。生きているオブジェクトを死んでいると判定するのは非常にまずい。これを避けるにはふたつの方法が知られている。スレッドの意味がなくなりかねない。GCは思ったより頻繁に起きるものだし。いつまでたっても回収が行えないことを考えると、実装が複雑になってしまう。protectionのような方法を使うと移植性が下がってしまうし。スレッド環境下でも性能が維持できるのではないかと考えたのだが(まだ続く)。あー、でもスクリプト言語では性能はあまり問題にならないと自分で書いたのだったな。