static void *dt_control_work_res(void *ptr) { #ifdef _OPENMP // need to do this in every thread omp_set_num_threads(darktable.num_openmp_threads); #endif worker_thread_parameters_t *params = (worker_thread_parameters_t *)ptr; dt_control_t *s = params->self; threadid = params->threadid; free(params); int32_t threadid = dt_control_get_threadid_res(); while(dt_control_running()) { // dt_print(DT_DEBUG_CONTROL, "[control_work] %d\n", threadid); if(dt_control_run_job_res(s, threadid) < 0) { // wait for a new job. int old; pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old); dt_pthread_mutex_lock(&s->cond_mutex); dt_pthread_cond_wait(&s->cond, &s->cond_mutex); dt_pthread_mutex_unlock(&s->cond_mutex); pthread_setcancelstate(old, NULL); } } return NULL; }
void *dt_control_work(void *ptr) { #ifdef _OPENMP // need to do this in every thread omp_set_num_threads(darktable.num_openmp_threads); #endif dt_control_t *s = (dt_control_t *)ptr; // int32_t threadid = dt_control_get_threadid(); while(dt_control_running()) { // dt_print(DT_DEBUG_CONTROL, "[control_work] %d\n", threadid); if(dt_control_run_job(s) < 0) { // wait for a new job. dt_pthread_mutex_lock(&s->cond_mutex); dt_pthread_cond_wait(&s->cond, &s->cond_mutex); dt_pthread_mutex_unlock(&s->cond_mutex); } } return NULL; }
static void *dt_control_work(void *ptr) { #ifdef _OPENMP // need to do this in every thread omp_set_num_threads(darktable.num_openmp_threads); #endif worker_thread_parameters_t *params = (worker_thread_parameters_t *)ptr; dt_control_t *control = params->self; threadid = params->threadid; free(params); // int32_t threadid = dt_control_get_threadid(); while(dt_control_running()) { // dt_print(DT_DEBUG_CONTROL, "[control_work] %d\n", threadid); if(dt_control_run_job(control) < 0) { // wait for a new job. dt_pthread_mutex_lock(&control->cond_mutex); dt_pthread_cond_wait(&control->cond, &control->cond_mutex); dt_pthread_mutex_unlock(&control->cond_mutex); } } return NULL; }