Lines Matching defs:p_thread_pool

58 	cl_thread_pool_t *p_thread_pool = (cl_thread_pool_t *) context;
61 pthread_mutex_lock(&p_thread_pool->mutex);
62 pthread_cleanup_push(cleanup_mutex, p_thread_pool);
63 while (!p_thread_pool->events)
64 pthread_cond_wait(&p_thread_pool->cond,
65 &p_thread_pool->mutex);
66 p_thread_pool->events--;
69 (*p_thread_pool->pfn_callback) (p_thread_pool->context);
76 cl_thread_pool_init(IN cl_thread_pool_t * const p_thread_pool,
83 CL_ASSERT(p_thread_pool);
86 memset(p_thread_pool, 0, sizeof(*p_thread_pool));
91 pthread_mutex_init(&p_thread_pool->mutex, NULL);
92 pthread_cond_init(&p_thread_pool->cond, NULL);
94 p_thread_pool->events = 0;
96 p_thread_pool->pfn_callback = pfn_callback;
97 p_thread_pool->context = context;
99 p_thread_pool->tid = calloc(count, sizeof(*p_thread_pool->tid));
100 if (!p_thread_pool->tid) {
101 cl_thread_pool_destroy(p_thread_pool);
105 p_thread_pool->running_count = count;
108 if (pthread_create(&p_thread_pool->tid[i], NULL,
109 thread_pool_routine, p_thread_pool) < 0) {
110 cl_thread_pool_destroy(p_thread_pool);
118 void cl_thread_pool_destroy(IN cl_thread_pool_t * const p_thread_pool)
122 CL_ASSERT(p_thread_pool);
124 for (i = 0; i < p_thread_pool->running_count; i++)
125 if (p_thread_pool->tid[i])
126 pthread_cancel(p_thread_pool->tid[i]);
128 for (i = 0; i < p_thread_pool->running_count; i++)
129 if (p_thread_pool->tid[i])
130 pthread_join(p_thread_pool->tid[i], NULL);
132 p_thread_pool->running_count = 0;
133 pthread_cond_destroy(&p_thread_pool->cond);
134 pthread_mutex_destroy(&p_thread_pool->mutex);
136 p_thread_pool->events = 0;
139 cl_status_t cl_thread_pool_signal(IN cl_thread_pool_t * const p_thread_pool)
142 CL_ASSERT(p_thread_pool);
143 pthread_mutex_lock(&p_thread_pool->mutex);
144 p_thread_pool->events++;
145 ret = pthread_cond_signal(&p_thread_pool->cond);
146 pthread_mutex_unlock(&p_thread_pool->mutex);