/** * Starts the synthesizer thread and music playback. */ static void startPlayer() { if(DMFluid_Driver()) return; DENG_ASSERT(!worker); DENG_ASSERT(sfxBuf == NULL); // Create a sound buffer for playing the music. sfxBuf = DMFluid_Sfx()->Create(SFXBF_STREAM, 16, 44100); DSFLUIDSYNTH_TRACE("startPlayer: Created SFX buffer " << sfxBuf); // As a streaming buffer, the data will be read from here. // The length of the buffer is ignored, streaming buffers play indefinitely. memset(&streamSample, 0, sizeof(streamSample)); streamSample.id = -1; // undefined sample streamSample.data = reinterpret_cast<void*>(streamOutSamples); streamSample.bytesPer = 2; streamSample.numSamples = MAX_BLOCKS * BLOCK_SAMPLES; streamSample.rate = 44100; DMFluid_Sfx()->Load(sfxBuf, &streamSample); startWorker(); // Update the buffer's volume. DMFluid_Sfx()->Set(sfxBuf, SFXBP_VOLUME, musicVolume); DMFluid_Sfx()->Play(sfxBuf); }
Matrix* balanceWork(Matrix* m1, Matrix* m2, int numThreads) { int i, amountOfWorkToEach = 0, workLeft = 0, aditionalWork = 0, start, end, lastStartIndex = 0; Matrix* result = (Matrix*) malloc(sizeof(Matrix)); pthread_t* threads = (pthread_t*) calloc(numThreads, sizeof(pthread_t)); result->data = initMatrix(m1->rows, m2->columns); result->rows = m1->rows; result->columns = m2->columns; amountOfWorkToEach = (m1->rows / numThreads); workLeft = m1->rows % numThreads; aditionalWork = (workLeft > 0) ? 1 : 0; workLeft--; for (i = 0; i < numThreads; i++) { start = lastStartIndex; end = start + amountOfWorkToEach + aditionalWork; lastStartIndex = end; threads[i] = startWorker(m1, m2, result, start, end); aditionalWork = (workLeft > 0) ? 1 : 0; workLeft--; } wait_all(threads, numThreads); return result; }
bool PedometerSensor::restartWorker(int64_t newDelay) { { Mutex::Autolock _l(mDelayMutex); mCurrentDelay = newDelay; } stopWorker(); return startWorker(); }
/* function load(script: Path, timeout: Number = 0): Void */ static EjsObj *workerLoad(Ejs *ejs, EjsWorker *worker, int argc, EjsObj **argv) { int timeout; assert(argc == 0 || ejsIs(ejs, argv[0], Path)); worker->scriptFile = sclone(((EjsPath*) argv[0])->value); timeout = argc == 2 ? ejsGetInt(ejs, argv[1]): 0; return startWorker(ejs, worker, timeout); }
/* function eval(script: String, timeout: Boolean = -1): Obj */ static EjsObj *workerEval(Ejs *ejs, EjsWorker *worker, int argc, EjsObj **argv) { int timeout; assert(ejsIs(ejs, argv[0], String)); worker->scriptLiteral = (EjsString*) argv[0]; timeout = argc == 2 ? ejsGetInt(ejs, argv[1]): MAXINT; return startWorker(ejs, worker, timeout); }
/* * function load(script: Path, timeout: Number = 0): Void */ static EjsVar *workerLoad(Ejs *ejs, EjsWorker *worker, int argc, EjsVar **argv) { int timeout; mprAssert(argc == 0 || ejsIsPath(argv[0])); worker->scriptFile = mprStrdup(worker, ((EjsPath*) argv[0])->path); timeout = argc == 2 ? ejsGetInt(argv[1]): 0; return startWorker(ejs, worker, timeout); }
/* * function eval(script: String, timeout: Boolean = -1): String */ static EjsVar *workerEval(Ejs *ejs, EjsWorker *worker, int argc, EjsVar **argv) { int timeout; mprAssert(ejsIsString(argv[0])); worker->scriptLiteral = mprStrdup(worker, ejsGetString(argv[0])); timeout = argc == 2 ? ejsGetInt(argv[1]): MAXINT; return startWorker(ejs, worker, timeout); }
Master::Master() { thread = new QThread(); worker = new Worker(); worker->moveToThread(thread); // connect the signal and slots connect(this,SIGNAL(startWorker()),worker,SLOT(start())); connect(worker,SIGNAL(WorkerFinished()),this,SLOT(onWorkerFinished())); // Start the thread thread->start(); }
void ControlWorker::beginWork(int interval,long timeout) { if (!istarted) { if(wklist.isEmpty()) return; istarted = true; context->setInterval(interval); context->setPollTimeOut(timeout); context->start(); emit startWorker(); } }
void _startWorkerDeamon(struct START_WORKER_DELAYED * argument) { startWorker(argument->coreWorker, argument->todoList, argument->status, argument->IDToPosition, argument->nbElemTotal, argument->quit, argument->mainTab, true); free(argument); }
bool startMDL(char * state, PROJECT_DATA ** cache, THREAD_TYPE * coreWorker, DATA_LOADED **** todoList, int8_t *** status, uint ** IDToPosition, uint * nbElemTotal, bool * quit, void * mainTab) { uint i; if(cache == NULL || coreWorker == NULL || todoList == NULL || status == NULL || nbElemTotal == NULL || quit == NULL) return false; if(*todoList == NULL || **todoList == NULL || *status == NULL) { *todoList = malloc(sizeof(DATA_LOADED **)); if(*todoList == NULL) return false; /*Initialisation*/ **todoList = MDLLoadDataFromState(cache, nbElemTotal, state); if(*nbElemTotal == 0) //No data doesn't mean init failure return true; *status = malloc((*nbElemTotal+1) * sizeof(int8_t*)); if(*status == NULL) return false; for(i = 0; i < *nbElemTotal; i++) { (*status)[i] = malloc(sizeof(int8_t)); if((*status)[i] != NULL) *(*status)[i] = MDL_CODE_DEFAULT; else { while(i-- > 0) free((*status)[i]); free(*status); *status = NULL; for(i = 0; i < *nbElemTotal; i++) free((**todoList)[i]); free(*todoList); *todoList = NULL; *nbElemTotal = 0; return false; } } (*status)[i] = NULL; } if(*nbElemTotal != 0 && *IDToPosition == NULL) { *IDToPosition = malloc(*nbElemTotal * sizeof(uint)); if(*IDToPosition != NULL) { i = 0; for(uint length = *nbElemTotal; i < length; i++) (*IDToPosition)[i] = i; } } return startWorker(coreWorker, todoList, status, IDToPosition, nbElemTotal, quit, mainTab, false); }