This is documentation for Mathematica 6, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)
MathLink C Function

MLSetYieldFunction()

int MLSetYieldFunction(MLINK link, MLYieldFunctionObject yf)
installs the yield function yf for the link referenced by link.
  • Some MathLink API calls will block until data is available to read or space is available for writing. If an application needs to perform other useful processing during that blocking time, the application can install a yield function for the link and MathLink will automatically make calls to the yield function while it blocks.
  • To back out of a blocked read or write, the yield function should return a nonzero value.
  • MLSetYieldFunction() will return 0 in the event of an error, and a nonzero value if the function succeeds.
  • Use MLError() to retrieve the error code if MLSetYieldFunction() fails.
  • MLSetYieldFunction() is declared in the MathLink header file mathlink.h.
#include "mathlink.h"

int AppYieldFunction(MLINK lp, MLYieldParameters yp)
{
    /* ... */
    return 0;
}

int main(int argc, char **argv)
{
    MLENV env;
    MLINK link;
    int error;

    env = MLInitialize((MLParametersPointer)0);
    if(env (MLENV)0)
        { /* unable to initialize MathLink environment */ }

    link = MLOpenArgcArgv(env, argv, argv + argc, &error);
    if(link (MLINK)0 || error MLEOK)
        { /* unable to create the link */ }

    if(! MLSetYieldFunction(link, (MLYieldFunctionObject)AppYieldFunction))
        { /* unable to set the yield function for link */ }

    /* ... */

    MLClose(link);
    MLDeinitialize(env);
    return 0;
}
  • MLGetYieldFunction()