static void threadFunc(union sigval sv) { mqd_t *mqdp; mqdp = sv.sival_ptr; notifySetup(mqdp); drainQueue(*mqdp); }
void SingleBillElevationDataProvider::onElevationData(ElevationData* elevationData) { _elevationData = elevationData; _elevationDataResolved = true; if (_elevationData == NULL) { ILogger::instance()->logError("Can't download Elevation-Data from %s", _bilUrl.getPath().c_str()); } drainQueue(); }
static void /* Thread notification function */ threadFunc(union sigval sv) { mqd_t *mqdp; mqdp = sv.sival_ptr; /* Reregister for message notification */ notifySetup(mqdp); drainQueue(*mqdp); }
int main(int argc, char *argv[]) { mqd_t mqd; if (argc != 2 || strcmp(argv[1], "--help") == 0) usageErr("%s /mq-name\n", argv[0]); mqd = mq_open(argv[1], O_RDONLY | O_NONBLOCK); if (mqd == (mqd_t) -1) errExit("mq_open"); notifySetup(&mqd); drainQueue(mqd); pause(); }
int main(int argc, char *argv[]) { mqd_t mqd; if (argc != 2 || strcmp(argv[1], "--help") == 0) usageErr("%s /mq-name\n", argv[0]); mqd = mq_open(argv[1], O_RDONLY | O_NONBLOCK); if (mqd == (mqd_t) -1) errExit("mq_open"); notifySetup(&mqd); drainQueue(mqd); /* Handle possibility that messages were already queued before we established notification */ pause(); /* Wait for notifications via thread function */ }
void FixedThreadPool::workerThread() { int gateCount = d_gateCount; while (1) { { bslmt::LockGuard<bslmt::Mutex> lock(&d_gateMutex); ++d_numThreadsReady; d_threadsReadyCond.signal(); while (gateCount == d_gateCount) { d_gateCond.wait(&d_gateMutex); } gateCount = d_gateCount; } int control = d_control.loadRelaxed(); if (e_RUN == control) { processJobs(); control = d_control; } if (e_DRAIN == control) { drainQueue(); } else if (e_SUSPEND == control) { continue; } else { BSLS_ASSERT(e_STOP == control); return; // RETURN } } }