示例#1
0
static void TestProbe()
/*
  Process 0 sleeps for 20 seconds and then sends each
  process a message.  The other processes sleep for periods
  of 2 seconds and probes until it gets a message.  All processes
  respond to process 0 which recieves using a wildcard probe.
  */
{
    long type_syn = 32;
    long type_msg = 33;
    long type_ack = 34;
    long me = NODEID_();
    char buf;
    long lenbuf = sizeof buf;
    long sync = 1;


    if (me == 0) {
        (void) printf("Probe test ... processes should sleep for 20s only\n");
        (void) printf("----------\n\n");
        (void) fflush(stdout);
    }

    SYNCH_(&type_syn);

    if (me == 0) {
        long nproc = NNODES_();
        long anyone = -1;
        long ngot = 0;
        long node;

        (void) sleep((unsigned) 20);

        for (node=1; node<nproc; node++) {
            SND_(&type_msg, &buf, &lenbuf, &node, &sync);
            (void) printf("    Sent message to %ld\n", (long)node);
            (void) fflush(stdout);
        }

        while (ngot < (nproc-1))
            if (PROBE_(&type_ack, &anyone)) {
                RCV_(&type_ack, &buf, &lenbuf, &lenbuf, &anyone, &node, &sync);
                (void) printf("    Got response from %ld\n", (long)node);
                (void) fflush(stdout);
                ngot++;
            }
    }
    else {
        long node = 0;
        while (!PROBE_(&type_msg, &node)) {
            (void) printf("    Node %ld sleeping\n", (long)me);
            (void) fflush(stdout);
            (void) sleep((unsigned) 2);
        }
        RCV_(&type_msg, &buf, &lenbuf, &lenbuf, &node, &node, &sync);
        SND_(&type_ack, &buf, &lenbuf, &node, &sync);
    }

    SYNCH_(&type_syn);
}
示例#2
0
文件: capi.c 项目: jeffhammond/ga
long tcg_probe(long type, long node)
{
    long atype = type;
    long anode = node;

    return PROBE_(&atype, &anode);
}
示例#3
0
long tcg_probe(long type, long node)
{
    Integer atype = type;
    Integer anode = node;

    return PROBE_(&atype, &anode);
}