[Mew-dist 2121] Re: im* が止まる (win95)

Miyashita Hisashi ( 宮下 尚:HIMI ) himi at example.com
1997年 9月 18日 (木) 19:26:40 JST


すみません。私の頭の問題か、Windows95の問題のどちらかのようです。

mule-win32 MLでのテスト結果によると、Auto Reset Eventを同期処理に
使用するのをやめた結果、imlsが、Windows95でも止まることがなくなりました。
どうも、変なことを言って、申し訳ありませんでした。
mule-win32 MLでテストしてくださった方々に感謝します。

Kazu Yamamoto (=?iso-2022-jp?B?GyRCOzNLXE9CSScbKEI=?=) <Kazu at example.com> writes:

> > ....1行毎に$|切り替えしてる!!!!!
> > 
> > たしかに、すぐにSummaryの内容を見たいとはおもうかもしれません。
> > それにしても、これはやりすぎのような気がします。
> 
> 一般にユーザインターフェイスでは、全ての処理が終るまでユーザを待たすの
> ではなく、できた部分からユーザに見せるのがよいとされています。どの部分
> に対してやりすぎだと感じているのか分からないので、適切に回答できません
> が、枠組としてはやりすぎではないと思います。

今回のような用途に対して、で、限定すると
この部分には賛成できません。
PipeのオーバーヘッドとBufferingの効果を考えると、
かえってユーザーを待たせることになると思います。

Emacsが、Processからの出力を読み取るとき、
何度もselect()で引っ掛かると大変な負担になります。
(UNIX上でのお話)
Overlapped I/Oでない限り、Perlの動作もBlockされるので、
バランスが良いとはとても思えません。

それに、最後まで待たせることにはならないでしょう。
バッファがいっぱいになったら、自動的にFlushされるのですから。

(もし、無理にでもFlush Outさせるのであれば、isatty()でも
使用して、端末出力であることを確認した方が良いように
思いますが、Perlで、こんなものがあるのでしょうか?)

ただ、このあたりはPolicyですので、
特に変更して欲しいとは思いません。

もっとも、$|を切り替えてprint ''をする....
というコードが、FlushするときにBestなコードか、ということになると
どうなのでしょう?

FileHandle パッケージのautoflush methodは、....$|切り替えているだけだから
意味はないようですね。
ところで、Perl5で、selectを使う必要はあるのでしょうか? > 詳しい方。

From himi




Mew-dist メーリングリストの案内