Пример #1
0
static void cancelTest(asynUser *pasynUser)
{
    cmdInfo    *pcmdInfo = (cmdInfo *)pasynUser->userPvt;
    threadInfo *pthreadInfo = pcmdInfo->pthreadInfo;
    asynStatus status;
    int        wasQueued;

    fprintf(pcmdInfo->file,"%s %s  cancelRequest should remove\n",
        pthreadInfo->threadName,pcmdInfo->message);
    startBusy(pthreadInfo);
    epicsEventTryWait(pcmdInfo->callbackDone);
    status = pasynManager->queueRequest(pasynUser,asynQueuePriorityLow,0.0);
    if(checkStatus(status,pthreadInfo,"testCancelRequest")) return;
    epicsThreadSleep(.01);
    status = pasynManager->cancelRequest(pasynUser,&wasQueued);
    if(checkStatus(status,pthreadInfo,"testCancelRequest")) return;
    fprintf(pcmdInfo->file,"%s %s cancelRequest wasQueued %d\n",
        pthreadInfo->threadName,pcmdInfo->message,wasQueued);
    if(!wasQueued) epicsEventMustWait(pcmdInfo->callbackDone);
    epicsThreadSleep(.04); /*wait for busy to complete*/

    fprintf(pcmdInfo->file,"%s %s should find callback active\n",
        pthreadInfo->threadName,pcmdInfo->message);
    epicsEventTryWait(pcmdInfo->callbackDone);
    status = pasynManager->queueRequest(pasynUser,asynQueuePriorityLow,0.05);
    if(checkStatus(status,pthreadInfo,"testCancelRequest")) return;
    epicsThreadSleep(.01);
    status = pasynManager->cancelRequest(pasynUser,&wasQueued);
    if(checkStatus(status,pthreadInfo,"testCancelRequest")) return;
    fprintf(pcmdInfo->file,"%s %s cancelRequest wasQueued %d\n",
        pthreadInfo->threadName,pcmdInfo->message,wasQueued);
    if(!wasQueued) epicsEventMustWait(pcmdInfo->callbackDone);

    fprintf(pcmdInfo->file,"%s %s should find timeout active\n",
        pthreadInfo->threadName,pcmdInfo->message);
    startBusy(pthreadInfo);
    epicsEventTryWait(pcmdInfo->callbackDone);
    status = pasynManager->queueRequest(pasynUser,asynQueuePriorityLow,0.02);
    if(checkStatus(status,pthreadInfo,"testCancelRequest")) return;
    epicsThreadSleep(.03);
    status = pasynManager->cancelRequest(pasynUser,&wasQueued);
    if(checkStatus(status,pthreadInfo,"testCancelRequest")) return;
    fprintf(pcmdInfo->file,"%s %s cancelRequest wasQueued %d\n",
        pthreadInfo->threadName,pcmdInfo->message,wasQueued);
    if(!wasQueued) epicsEventMustWait(pcmdInfo->callbackDone);
}
Пример #2
0
void DBConnector::RunConnect(){
    DBThread* thread = new DBThread();
    thread->setConnectionData(m_connData);
    QObject::connect(thread, SIGNAL(started()), MyApplication::TheApp(), SIGNAL(startBusy()));
    QObject::connect(thread, SIGNAL(finished()), MyApplication::TheApp(), SIGNAL(finishBusy()));
    QObject::connect(thread, SIGNAL(fireResult(bool)), this, SLOT(obtainThreadResult(bool)));

    thread->start();
}