[Globalbase-users] Re: [Globalbase-dev] Re: ロックされてしまいます。

アーカイブの一覧に戻る

joshua4 joshu****@nichi*****
2003年 6月 17日 (火) 00:15:33 JST


中島様

ふっと、思ったのですが、新しいwinのコードで、セマフォチェックにEINTが
入っていますよね。インタラプトでブロッキング命令が解除されるインタフェー
スがwindowsにあるとするならば、s_read_file の実装で、readの直後のエラー
チェックで、EINTをチェックし、readをリトライするようにしておいた方が無難
ですよ。

このリトライは冗長のように見えますが、OSのread(recv)の実装方法で、EINT
を先にチェックしているか、それとも、データがそろっているかどうかを先に
チェックしているかの違いによって、挙動が変化します。前者の場合、データが
そろっていて、selectは正常終了したとしても、その直後にインタラプトがかか
るとreadでEINTでエラーリターンする可能性があります。windowsがどちらの実
装になっているかをチェックするためにはかなりの実行テストをしないと解らな
いので、前者の実装になっていると思ってコーディングした方が正解です。たと
えば、Solarisは前者の実装になっていることを確認しています。

森 ひろひさ







Globalbase-users メーリングリストの案内
アーカイブの一覧に戻る