目次 - SDL_net 3.0 - NET_WaitUntilInputAvailable

NET_WaitUntilInputAvailable

複数のソケットの少なくとも1つのデータが利用可能になるまでブロックする

ヘッダ

SDL3_net/SDL_net.h

構文

int NET_WaitUntilInputAvailable(void **vsockets, int numsockets, Sint32 timeout);

引数

void **vsockets待つ可能性がある様々なオブジェクトの配列. それぞれvoidポインタでキャストされている
intnumsocketsvsockets配列のポインタの数
Sint32timeout新しい入力のミリ秒単位の待ち時間. -1のとき無限に待ち, 0のとき待たずにチェックする

戻り値

(int) 新しい入力を得た項目の数を戻す. エラーのとき-1を戻す.

詳細

これはほとんどのアプリケーションには必要のない複雑な関数だが, 効率的なサーバや特定の場合のI/Oスレッドの作成のために役立ちうる.

この関数は, オブジェクトの一覧を与え, いずれかが新しい入力を得て利用可能になるまで待つことができる. 呼び出したスレッドは, そのときまでスリープ状態になる.

次のオブジェクトをvoid *でキャストしてvsockets配列の項目とすることができる:

この関数は解決の完了までどれだけ待つかのミリ秒単位のタイムアウト時間を引数とする. タイムアウト時間に-1を指定すると無限に待ち, 0を指定すると現在の状態をチェックして即座に戻る.

この関数は新しい入力を得た項目の個数を戻すが, どれであるかは知らせない. これらのソケットへのアクセスはブロックしないので, 単にソケットの読み込みを1つずつ試して, どのソケットが準備ができているかを確かめればよい. 準備ができたものがなくタイムアウトした場合は0を戻す. エラーの場合は-1を戻す.

スレッドセーフ

同じソケットを複数のスレッドから同期を行わずに使用してはならない. しかし, 異なるスレッドから別々のソケットに同時にアクセスすることは問題ない.

バージョン

SDL_net 3.0.0以降

関連項目

SDL Wikiへのリンク

SDL3_net/NET_WaitUntilInputAvailable