[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:7426] emacs-22_0_50-20060729 マージ



やまざきです。

Date: Mon, 31 Jul 2006 08:17:44 +0900
From: MIYOSHI Masanori <miyoshi@xxxxxxxxxxx>
Subject: Re: [MD:7426] emacs-22_0_50-20060729 マージ
> 
> >>>>> [meadow-develop : No.7436] にて
> >>>>> 私は書きました:
> > きちんとやるには、wait_reading_process_output() でタイムアウトした
> > 場合には、
> > >	read_avail_input (0);
> > にするのが良いのでしょう。
> 
> > でもタイムアウトが発生したのか判定する方法が良く分かりません。
> > wait_reading_process_output() の返す値もよく分からないし。
> > もう少し調べてみます。
> 
> あまりにもひどい状況なので、仮の対策をやっておきました。
> 本格的な対策は後日やります。

修正ありがとうございます。

この修正後でも、sit-forで戻ってこないことがあるのですが、
以下のメールを見ると、どうやら、本家の問題なんですかね。

http://lists.nongnu.org/archive/html/emacs-devel/2006-07/msg01480.html


以下、少し話が変わります。

元のメールで、MW32_read_socketのWaitForSingleObjectを削除する
パッチを出したのですが、もともとここで待ち合わせをしている理由が
いまひとつわかりません。

# 他の実装(X,Mac)もNTEmacsと同様にexpectedの引数を使っていないように
# みえます。

このハンドルに対してのSetEventは、message threadで実施しているようで、
message threadへのイベントがない場合は、main threadはここでとまって
しまいます。

wait_reading_process_outputでは、ネットワーク系のイベントも受けていて、
これはmessage threadへのイベントを発生させないと思います。

結果、message thread(mw32_async_handle_message)のWaitMessageで
とまっている際に、wait_reading_process_outputでネットワーク系の
イベントを受信した時は、処理が止まってしまうと思います。
# わたしの環境ではMewのPOP受信時の反応が違うように感じます。

この待ち合わせを削除できないのかなと思います。

-- 
yamazaki-k(at)mwe.biglobe.ne.jp