ホーム > デベロッパ > BREW FAQ

BREW FAQ : その他

ノンブロッキング モードとは ?

IWeb インターフェイスを例にして、ノンブロッキング モード (非同期処理) を説明します。

IWeb インターフェイスを使用してウェブサーバーからデータを取得する手順は、 以下のようになります。

  1. IWEB_GetResponse 関数を呼び出します。
  2. ネットワークからデータの取得を完了せずに IWEB_GetResponse 関数は終了します。
  3. 呼び出し元はアプリの処理を継続します。
  4. ネットワークからデータの取得が完了した時点で、コールバック関数が呼び出されます。
  5. コールバック関数中で IWEBRESP_GetInfo 関数を呼び出し、データを取得します。

IWEB_GetResponse 関数は、ノンブロッキング モードで動作する関数であるため、 ネットワークからデータの取得を完了せずに終了し、 呼び出し元はアプリの処理を継続します。 その後、ネットワークからデータの取得が完了した時点で、 コールバック関数が呼び出されます。 このように、ネットワークからデータを取得する処理など時間の掛かる処理でも、 アプリの動作が停止することはありません。

これに対して、IWEB_GetResponse 関数がブロッキング モード (同期処理) で動作すると仮定しますと、 上記の手順は以下のようになります。

  1. IWEB_GetResponse 関数を呼び出します。
  2. ネットワークからデータを完全に取得するまで IWEB_GetResponse 関数は終了しません。
  3. 呼び出し元は、IWEB_GetResponse 関数の終了を待ち続けます。

このように、ブロッキング モードで動作した場合は、 ネットワークからデータを完全に取得するまで、 呼び出し元の処理が停止してしまいます。この間、アプリの動作は停止します。

【注意】
IWEB_GetResponse 関数は、ブロッキング モードで動作することはありません。 ブロッキング モードをノンブロッキング モードと比較するために、 例として説明しています。