MLWaitForLinkActivityWithCallback (C 関数)

MLWaitForLinkActivityWithCallbackWSWaitForLinkActivityWithCallbackに置き換えられた.

int MLWaitForLinkActivityWithCallback(MLINK l, MLLinkWaitCallBackObject callback)

l で指定されたMathLink接続で読み込むデータがあるまで返さないが,callback として渡される関数を周期的に呼び返す.

詳細

  • ユーザインターフェースやアプリケーションのメインスレッドを妨げないように,データを待たなければならないバックグラウンドスレッドでMLWaitForLinkActivityWithCallback()を使う.
  • ロギングのために有効にされたリンク上でのリンクアクティビティを待つ必要がある場合に,MLWaitForLinkActivityWithCallback()(あるいは関連する関数であるMLWaitForLinkActivity() )を使う.
  • MLWaitForLinkActivityWithCallback()は,エラーが起った場合にはMLWAITERRORを,そして関数が成功した場合にはMLWAITSUCCESSを返す.
  • MLLinkWaitCallBackObjectは,形式int function(MLINK, void *)の関数に対するポインタである.第2引数は,将来の使用のために用意されている.関数が1を返す場合には,MLWaitForLinkActivityWithCallback()MLWAITCALLBACKABORTEDを返す.
  • MWaitForLinkActivityWithCallback()は,MathLinkヘッダファイルmathlink.hで宣言される.

例題

  (1)

#include "mathlink.h"

/* A function for MathLink to call back to while waiting */
int WaitFunction(MLINK l, void *future)
{
    /* By default do not back out of
        MLWaitForLinkActivityWithCallback(). */
    return 0;
}


/* A function for waiting for link activity */

void f(MLINK l)
{
    switch(MLWaitForLinkActivityWithCallBack(l, WaitFunction))
    {
        case MLWAITERROR:
            /* Handle the error */
            break;
        case MLWAITSUCCESS:
            /* Now read incoming data */
            break;
        case MLWAITCALLBACKABORTED:
        default:
            /* WaitFunction decided to abort the wait. */
    }
}