0xfee1dead

by SATO Yusuke (http://binary.nahi.to)
Dec 05
Permalink
# pthread_cancel(pid) * a cancelled thread needs to be joined

lecture #

うげ、pthread_cancel()したスレッドってpthread_join()しないとリソースが漏れたりするんだっけ???

手元で試す…確かに、joinしないとdeferredでcancelしたスレッド用のスタックのメモリ(手元のFedora/2.6.21/NPTLだと10MB)がleakする。munmapされない。自分ではcancelなど滅多にしないこともあり、承知してなかった。detached状態で生成したスレッドだとどうなるかなぁ。

ま、ちゃんとcancelされたことを確認するためにもjoinしたほうがいいかな。でも、ちゃんと(遅延)cancelするのは難しいんだよな。やっぱcancelなんてやーめたと思い直すほど。