00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef APU_THREAD_POOL_H
00020 #define APU_THREAD_POOL_H
00021
00022 #include "apu.h"
00023 #include "apr_thread_proc.h"
00024
00045 #if APR_HAS_THREADS
00046
00047 #ifdef __cplusplus
00048 extern "C" {
00049 #endif
00050
00058 typedef struct apr_thread_pool apr_thread_pool_t;
00059
00060 #define APR_THREAD_TASK_PRIORITY_LOWEST 0
00061 #define APR_THREAD_TASK_PRIORITY_LOW 63
00062 #define APR_THREAD_TASK_PRIORITY_NORMAL 127
00063 #define APR_THREAD_TASK_PRIORITY_HIGH 191
00064 #define APR_THREAD_TASK_PRIORITY_HIGHEST 255
00065
00077 APU_DECLARE(apr_status_t) apr_thread_pool_create(apr_thread_pool_t **me,
00078 apr_size_t init_threads,
00079 apr_size_t max_threads,
00080 apr_pool_t *pool);
00081
00086 APU_DECLARE(apr_status_t) apr_thread_pool_destroy(apr_thread_pool_t *me);
00087
00097 APU_DECLARE(apr_status_t) apr_thread_pool_push(apr_thread_pool_t *me,
00098 apr_thread_start_t func,
00099 void *param,
00100 apr_byte_t priority,
00101 void *owner);
00111 APU_DECLARE(apr_status_t) apr_thread_pool_schedule(apr_thread_pool_t *me,
00112 apr_thread_start_t func,
00113 void *param,
00114 apr_interval_time_t time,
00115 void *owner);
00116
00126 APU_DECLARE(apr_status_t) apr_thread_pool_top(apr_thread_pool_t *me,
00127 apr_thread_start_t func,
00128 void *param,
00129 apr_byte_t priority,
00130 void *owner);
00131
00141 APU_DECLARE(apr_status_t) apr_thread_pool_tasks_cancel(apr_thread_pool_t *me,
00142 void *owner);
00143
00149 APU_DECLARE(apr_size_t) apr_thread_pool_tasks_count(apr_thread_pool_t *me);
00150
00156 APU_DECLARE(apr_size_t) apr_thread_pool_scheduled_tasks_count(apr_thread_pool_t *me);
00157
00163 APU_DECLARE(apr_size_t) apr_thread_pool_threads_count(apr_thread_pool_t *me);
00164
00170 APU_DECLARE(apr_size_t) apr_thread_pool_busy_count(apr_thread_pool_t *me);
00171
00177 APU_DECLARE(apr_size_t) apr_thread_pool_idle_count(apr_thread_pool_t *me);
00178
00186 APU_DECLARE(apr_size_t) apr_thread_pool_idle_max_set(apr_thread_pool_t *me,
00187 apr_size_t cnt);
00188
00194 APU_DECLARE(apr_size_t)
00195 apr_thread_pool_tasks_run_count(apr_thread_pool_t * me);
00196
00202 APU_DECLARE(apr_size_t)
00203 apr_thread_pool_tasks_high_count(apr_thread_pool_t * me);
00204
00210 APU_DECLARE(apr_size_t)
00211 apr_thread_pool_threads_high_count(apr_thread_pool_t * me);
00212
00218 APU_DECLARE(apr_size_t)
00219 apr_thread_pool_threads_idle_timeout_count(apr_thread_pool_t * me);
00220
00226 APU_DECLARE(apr_size_t) apr_thread_pool_idle_max_get(apr_thread_pool_t *me);
00227
00234 APU_DECLARE(apr_size_t) apr_thread_pool_thread_max_set(apr_thread_pool_t *me,
00235 apr_size_t cnt);
00236
00247 APU_DECLARE(apr_interval_time_t)
00248 apr_thread_pool_idle_wait_set(apr_thread_pool_t * me,
00249 apr_interval_time_t timeout);
00250
00257 APU_DECLARE(apr_interval_time_t)
00258 apr_thread_pool_idle_wait_get(apr_thread_pool_t * me);
00259
00265 APU_DECLARE(apr_size_t) apr_thread_pool_thread_max_get(apr_thread_pool_t *me);
00266
00273 APU_DECLARE(apr_size_t) apr_thread_pool_threshold_set(apr_thread_pool_t *me,
00274 apr_size_t val);
00275
00281 APU_DECLARE(apr_size_t) apr_thread_pool_threshold_get(apr_thread_pool_t * me);
00282
00289 APU_DECLARE(apr_status_t) apr_thread_pool_task_owner_get(apr_thread_t *thd,
00290 void **owner);
00291
00294 #ifdef __cplusplus
00295 }
00296 #endif
00297
00298 #endif
00299 #endif