(2011/09/23 18:58), SASADA Koichi wrote:
>  ファイナライザの実行は,何時起こるかわからないものなので,デッドロック
> の可能性がある処理を行うのは,プログラムが悪い,ということになります.基
> 本的には,デッドロックを起こさないように書き直す必要がありますが,例えば
> 上記の場合では,mutex.trylock を利用することで回避することができます.

 すみません,trylock ではダメですね.

 うーん,これはどうするべきかな.ファイナライズ処理を遅延させるように
コードを書き換えれば解決できますが,ちょっと大がかりな気もしますね.問題
が weakref だけなら,大がかりでもいい気がしますが.

 この問題は,pthread_mutex* で管理している状況をシグナルハンドラでどう
処理するか,みたいなのに似ていると思うのですが,そもそも pthread_mutex*
はシグナルセーフじゃないから使えないんだよな.

-- 
// SASADA Koichi at atdot dot net