Etsushi Kato
ekato****@ees*****
2005年 3月 19日 (土) 12:27:24 JST
ヤマケンさん、こんにちは。 On Fri, Mar 18, 2005 at 04:16:37PM +0900, Etsushi Kato <ekato****@ees*****> wrote: > もちろん、write のコードの見直しが必要だと思うのですが、それだけでうまく対処 > できるのかどうかよくわからない、というつもりでした。 > そのため、コードの見直しも行ったうえで、ブロードキャストではなく、 > toolbar と普通のクライアントを server 側で区別して write するのも手 > かなと感じました。 helper-server で write 側も select するような構造でかつ、 uim_helper_send_message() を blocking IO するように試した変更をとりあ えず送ります。 ただ、これだけでは helper-server が write に失敗する場合にうまく動いて くれない場合がどうしても出てしまいました (まだどっかおかしいのかも…)。 ということで、このパッチには上で書いたように、client によって送るメッ セージ制限の制限も試しに含めてみました。 uim_helper_init_normal_client_fd(), uim_helper_init_toolbar_client_fd() という API を追加していて、 helper-server はこれらを区別して、normal_client には、 prop_{list,label}_update を送らないがそれ以外は送る、toolbar_client に はすべてのメッセージを送るようにしています。また、libuim-custom の client には、まったくメッセージを送らないようにしています。 これまでの uim_helper_init_client_fd() を使った場合 には、helper-server は、toolbar_client (すべてのメッセージを受信するク ライアント) と認識して動きます。 これで手元では、高負荷でも helper の問題は出なくなります。 もちろん、こういったクライアントごとのメッセージの選別なしに動くともっ といいのですが、どうでしょうか? -- Etsushi Kato ekato****@ees***** -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: helper-client-050319.diff.gz 型: application/x-gunzip サイズ: 4076 バイト 説明: 無し下載