3

Ruby の標準ライブラリ「io/wait」は、IO オブジェクトに対してready?、利用可能な入力がある場合に非 nil を返し、それ以外の場合に nil または false を返すメソッドを提供します。sysreadやのようないくつかのメソッドは、やsyswriteなどのより高いレベルのメソッドで安全に使用できないことを知っており、より高いレベルのメソッドと混合しても安全かどうかを知りたいと思っていました。ready メソッドはかなり便利で、おそらく に依存するよりも洗練されているように見えますが、驚くべきことに、あまり使用されていません。ドキュメントには、 orで使用するのが安全でないことを示すものは何もありません。ソケットの読み取り/書き込み時に最終的に予期しない動作を引き起こす可能性のある互換性のないメソッドを混在させていないことを確認したいだけです。getsreadready?IO.selectreadgets

編集:Ruby 1.8.7を使用していることに言及する必要があると思います。

4

1 に答える 1

3

私はRubyの経験はあまりありませんが、libcの経験は豊富で、安全だと思います。select()またはpoll()の観点から「ready」が実装されている可能性はかなり高いです。

「ready」がtv_secとtv_usecにゼロのtimevalが渡されたselect()のように動作する場合、「ready」の欠点は回転することです...タイムアウトをreadyに渡すことはできますか?

于 2009-11-22T17:41:19.737 に答える