MLReadyParallel (C 函数)

MLReadyParallel 已经被 WSReadyParallel 所取代.

int MLReadyParallel(MLENV env,MLINK *links,int n,mltimeval waittime)

获取长度为 n 的链接对象的一个列表,在由 waittime 指定的超时周期内等待其中一个链接有可读的数据.

更多信息

  • MLReadyParallel() 把索引返回到有数据可读的链接中的链接对象列表. 链接的索引从 0(n-1).
  • 如果在超时期满后没有链接有可读取的数据,MLReadyParallel() 返回 WLREADYPARALLELTIMEDOUT.
  • 在错误事件中 MLReadyParallel() 返回 WLREADYPARALLELERROR.
  • 若要等待一个不定周期直到链接可用,则将 waittime 设为 WLINFINITEWAIT.
  • MLReadyParallel() 不能用作精细的等待机制.
  • MLReadyParallel() 类似于内核函数 LinkReadyQ[{},waittime].
  • MLReadyParallel() 在 MathLink 标头文件 mathlink.h 中被声明.

范例

基本范例  (1)

#include "mathlink.h"

/* read data from either of two links */

void f(MLENV env, MLINK lp1, MLINK lp2)
{
    mltimeval timeout;
    MLINK links[2];
    int result;

    timeout.tv_sec = 5;
    timeout.tv_usec = 0;

    links[0] = lp1;
    links[1] = lp2;

    result = MLReadyParallel(env, (MLINK *)links, 2, timeout);
    if(result == MLREADYPARALLELERROR)
        { /* unable to check links for data */ }
    else if(result != MLREADYPARALLELTIMEDOUT)
        {
            /* read the link that has data ready */
            if(result == 0)
                /* read lp1 */
            else
                /* read lp2 */
        }
}