示例#1
0
void offlineInit() {

#ifdef INSERTION_TEST
    gettimeofday(&offlineInitDate, NULL);
#endif /* INSERTION_TEST */

    participate(true);
    succ = searchSucc(myAddress);
    if (addrIsMine(succ)) {
        signalArrival(myAddress, (addressSet) myAddress);
        bqueueEnqueue(wagonsToDeliver, wagonToSend);
        wagonToSend = newWiw();
        automatonState = ALONE_INSERT_WAIT;
        //printf("Nextstate(fake) = %s\n", stateToStr(automatonState));
        int rc = sem_post(sem_init_done);
        if (rc)
            ERROR_AT_LINE(EXIT_FAILURE, errno, __FILE__, __LINE__,
                          "error in sem_post");
        prec = myAddress;
        return;
    }
    sendOther(succ, false, INSERT, myAddress);
    automatonState = OFFLINE_CONNECTION_ATTEMPT;
    //printf("Nextstate(fake) = %s\n", stateToStr(automatonState));
    return;
}
void quickSort::sort(int h, int t)
{
    if ( h < t )
    {
        int q = participate(h, t);
        sort(h, q - 1);
        sort(q + 1, t);
    }
    
}
示例#3
0
void waitBeforeConnect() {
    int rc;
    pthread_t sleepThread;
    if (waitNb > waitNbMax) {
        ERROR_AT_LINE_WITHOUT_ERRNUM(EXIT_FAILURE, __FILE__, __LINE__,
                                     "waitNbMax owerflowed");
    }
    participate(false);
    if (prec != 0) {
        closeConnection(prec, true);
        prec = 0;
    }
    if (succ != 0) {
        closeConnection(succ, false);
        succ = 0;
    }
    rc = pthread_create(&sleepThread, NULL, &sleepTreatment, NULL );
    if (rc < 0)
        ERROR_AT_LINE(EXIT_FAILURE, rc, __FILE__, __LINE__, "pthread_create");
    rc = pthread_detach(sleepThread);
    if (rc < 0)
        ERROR_AT_LINE(EXIT_FAILURE, rc, __FILE__, __LINE__, "pthread_detach");
    return;
}
示例#4
0
 /*reduce data over selected mpi nodes*/
 MPIReduce() : mpiRank(-1), numRanks(0), isMPICommInitialized(false)
 {
     participate(true);
 }