# pthread_cancel(pid) * a cancelled thread needs to be joined
—
うげ、pthread_cancel()したスレッドってpthread_join()しないとリソースが漏れたりするんだっけ???
手元で試す…確かに、joinしないとdeferredでcancelしたスレッド用のスタックのメモリ(手元のFedora/2.6.21/NPTLだと10MB)がleakする。munmapされない。自分ではcancelなど滅多にしないこともあり、承知してなかった。detached状態で生成したスレッドだとどうなるかなぁ。
ま、ちゃんとcancelされたことを確認するためにもjoinしたほうがいいかな。でも、ちゃんと(遅延)cancelするのは難しいんだよな。やっぱcancelなんてやーめたと思い直すほど。