thread


thread問題は半分解決。ObjectがEXTEND_GCでない(何故?)ので、いくらObjectにポインタを持たせたところでダメ。
今回はuncollectableで明示的にルートセットに追加してる*1けど、何かちゃんとした方法論が有るはず。。まぁそのうちFFIとの絡みで解決してくれることを期待。
もう半分は多分GCのアレ( http://d.hatena.ne.jp/higepon/20090321/1237612316 )。
というわけでアニメーションもできるぜ。。今まで(先のLTのデモも含め)時分割のなんちゃってスレッドでどうにかしていたけれど、これからはちゃんとしたスレッドで取りあえず書ける。もっとも、オブジェクトを共有できないというごもっともな問題があるので処理の並列化には向かないけど。
教訓 : 足元も疑え
追記 : 今回は3スレッド体制。つまり、[終了ボタン入力受付スレッド] → [ディスプレイリスト生成スレッド] → [cairo描画スレッド]という流れになっている。前回のデモは(描画を適当なタイミングで切り上げて、入力が無いかチェック)→(描画)の繰り返しだったのでそれに比べればずっと簡単に書けるようになった。

*1:つまり、Object portに使っているmutexとかは回収できない。