int NET_WaitUntilInputAvailable(void **vsockets, int numsockets, Sint32 timeout);
| void ** | vsockets | 待つ可能性がある様々なオブジェクトの配列. それぞれvoidポインタでキャストされている |
| int | numsockets | vsockets配列のポインタの数 |
| Sint32 | timeout | 新しい入力のミリ秒単位の待ち時間. -1のとき無限に待ち, 0のとき待たずにチェックする |
これはほとんどのアプリケーションには必要のない複雑な関数だが, 効率的なサーバや特定の場合のI/Oスレッドの作成のために役立ちうる.
この関数は, オブジェクトの一覧を与え, いずれかが新しい入力を得て利用可能になるまで待つことができる. 呼び出したスレッドは, そのときまでスリープ状態になる.
次のオブジェクトをvoid *でキャストしてvsockets配列の項目とすることができる:
この関数は解決の完了までどれだけ待つかのミリ秒単位のタイムアウト時間を引数とする. タイムアウト時間に-1を指定すると無限に待ち, 0を指定すると現在の状態をチェックして即座に戻る.
この関数は新しい入力を得た項目の個数を戻すが, どれであるかは知らせない. これらのソケットへのアクセスはブロックしないので, 単にソケットの読み込みを1つずつ試して, どのソケットが準備ができているかを確かめればよい. 準備ができたものがなくタイムアウトした場合は0を戻す. エラーの場合は-1を戻す.
同じソケットを複数のスレッドから同期を行わずに使用してはならない. しかし, 異なるスレッドから別々のソケットに同時にアクセスすることは問題ない.