104 pthread_mutex_unlock(&pool->queue_lock); |
104 pthread_mutex_unlock(&pool->queue_lock); |
105 return job; |
105 return job; |
106 } |
106 } |
107 |
107 |
108 void threadpool_run(threadpool_t *pool, job_callback_f func, void *data) { |
108 void threadpool_run(threadpool_t *pool, job_callback_f func, void *data) { |
|
109 // TODO: handle errors |
|
110 |
|
111 if(pool->num_threads == 0) { |
|
112 threadpool_start(pool); |
|
113 } |
|
114 |
109 threadpool_job *job = malloc(sizeof(threadpool_job)); |
115 threadpool_job *job = malloc(sizeof(threadpool_job)); |
110 job->callback = func; |
116 job->callback = func; |
111 job->data = data; |
117 job->data = data; |
112 |
118 |
113 pthread_mutex_lock(&pool->queue_lock); |
119 pthread_mutex_lock(&pool->queue_lock); |