1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #ifndef THREADPOOL_H
30 #define THREADPOOL_H
31
32 #include "../public/nsapi.h"
33 #include <pthread.h>
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 typedef struct _pool_queue
pool_queue_t;
40 struct _thread_pool {
41 pthread_mutex_t queue_lock;
42 pthread_mutex_t avlbl_lock;
43 pthread_cond_t available;
44 pool_queue_t *queue;
45 uint32_t queue_len;
46 uint32_t num_idle;
47 uint32_t num_threads;
48 int min_threads;
49 int max_threads;
50 };
51
52 struct _threadpool_job {
53 job_callback_f callback;
54 void *data;
55 };
56
57 struct _pool_queue {
58 threadpool_job *job;
59 pool_queue_t *next;
60 };
61
62 void threadpool_enqueue_job(
threadpool_t *pool, threadpool_job *job);
63
64 void threadpool_shutdown(
threadpool_t *pool);
65
66 #ifdef __cplusplus
67 }
68 #endif
69
70 #endif
71