Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Change Policy: implicit file close



寺西です。

knok@xxxxxxxxxxxxx wrote:
> 
> > HACKING-ja は修正して、util::fopen(), util::efopen() でファイル
> > をオープンした後は util::fclose() でファイルを閉じることとでも
> > すれば良いかな?
> 
>   他には undef で明示的にデストラクタを呼ぶ、という選択肢もあります。
> いくつかのモジュールはそのような処理をしています。
> 
>   対称性を考えると util::fclose() を用意した方がよいような気もしますし、
> file アクセスの抽象化という意味でもそうした方が後処理をそこに仕込むこ
> とも容易にできそうです。

はい、そう思っています。また、特に問題になるのはファイルが閉じられる
のがいつなのかわからないということだけですので、メモリの開放など
本来のデストラクタの仕事は Perl に任せた方が効率が良いのでは
ないかと思います。
ファイルさえ明示的に閉じれば、他の処理はデストラクタに任せて大丈夫
でしょう。
現状、ファイルを閉じる処理をデストラクタ任せにしているのが問題な
わけですから。

明示的に undef でデストラクタを呼ぶのは、より安全ですが、
デストラクタの呼び出しは Perl に任せられるという大きな利点が
使えないので、非効率的になるのではないかと思われます。
(システムの都合の良いタイミングで、ガベージコレクションする方が
実行時の効率は良いはず)

# 他にデストラクタ任せにしている処理がなければという前提の上です。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns@xxxxxxxxxxxxxxx
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E