Wed, 27 Nov 2024 23:00:07 +0100
add TODO to use a future ucx feature
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
1 | /* |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
3 | * |
44
3da1f7b6847f
added some error messages
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
37
diff
changeset
|
4 | * Copyright 2013 Olaf Wintermann. All rights reserved. |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
5 | * |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
8 | * |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
11 | * |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
15 | * |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
27 | */ |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
28 | |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
29 | #include <stdio.h> |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
30 | #include <stdlib.h> |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
31 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
32 | #include <cx/hash_map.h> |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
33 | |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
34 | #include "threadpools.h" |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
35 | |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
36 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
37 | static CxMap *thread_pool_map; |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
38 | static int num_thrpools; |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
39 | static CxMap *io_pool_map; |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
40 | static int num_iopools; |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
41 | |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
42 | static threadpool_t *default_thread_pool; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
43 | static threadpool_t *last_thrpool_c; |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
44 | |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
45 | static threadpool_t *default_io_pool; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
46 | static threadpool_t *last_io_pool; |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
47 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
48 | int create_threadpool(cxstring name, ThreadPoolConfig *cfg) { |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
49 | if(thread_pool_map == NULL) { |
490 | 50 | thread_pool_map = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 16); |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
51 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
52 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
53 | CxHashKey key = cx_hash_key_bytes((const unsigned char*)name.ptr, name.length); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
54 | threadpool_t *pool = cxMapGet(thread_pool_map, key); |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
55 | if(pool) { |
77 | 56 | if(pool->min_threads > cfg->max_threads) { |
57 | pool->min_threads = cfg->min_threads; | |
58 | pool->max_threads = cfg->max_threads; | |
59 | } else { | |
60 | pool->max_threads = cfg->max_threads; | |
61 | pool->min_threads = cfg->min_threads; | |
62 | } | |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
63 | return 0; |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
64 | } else { |
67
50505dc3f8a6
dynamic thread pool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
44
diff
changeset
|
65 | threadpool_t *tp = threadpool_new(cfg->min_threads, cfg->max_threads); |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
66 | |
357
f45e962edf45
add separate threadpool_start function for creating initial threadpool threads
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
256
diff
changeset
|
67 | int ret = 0; |
f45e962edf45
add separate threadpool_start function for creating initial threadpool threads
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
256
diff
changeset
|
68 | if(!threadpool_start(tp)) { |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
69 | ret = cxMapPut(thread_pool_map, key, tp); |
357
f45e962edf45
add separate threadpool_start function for creating initial threadpool threads
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
256
diff
changeset
|
70 | } else { |
f45e962edf45
add separate threadpool_start function for creating initial threadpool threads
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
256
diff
changeset
|
71 | ret = 1; |
f45e962edf45
add separate threadpool_start function for creating initial threadpool threads
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
256
diff
changeset
|
72 | } |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
73 | |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
74 | if(ret == 0) { |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
75 | num_thrpools++; |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
76 | last_thrpool_c = tp; |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
77 | if(!default_thread_pool) { |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
78 | default_thread_pool = tp; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
79 | } |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
80 | } |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
81 | |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
82 | return ret; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
83 | } |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
84 | } |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
85 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
86 | int create_io_pool(cxstring name, int numthreads) { |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
87 | if(io_pool_map == NULL) { |
490 | 88 | io_pool_map = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 4); |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
89 | } |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
90 | CxHashKey key = cx_hash_key_bytes((const unsigned char*)name.ptr, name.length); |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
91 | threadpool_t *pool = cxMapGet(io_pool_map, key); |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
92 | if(pool) { |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
93 | pool->min_threads = numthreads; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
94 | pool->max_threads = numthreads; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
95 | return 0; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
96 | } else { |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
97 | threadpool_t *tp = threadpool_new(numthreads, numthreads); |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
98 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
99 | int ret = cxMapPut(io_pool_map, key, tp); |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
100 | |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
101 | if(ret == 0) { |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
102 | num_iopools++; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
103 | last_io_pool = tp; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
104 | if(!default_io_pool) { |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
105 | default_io_pool = tp; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
106 | } |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
107 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
108 | |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
109 | return ret; |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
110 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
111 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
112 | |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
113 | int check_thread_pool_cfg() { |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
114 | if(num_thrpools == 0) { |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
115 | ThreadPoolConfig cfg; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
116 | cfg.min_threads = 4; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
117 | cfg.max_threads = 8; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
118 | cfg.queue_size = 64; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
119 | cfg.stack_size = 262144; |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
120 | if(create_threadpool(cx_str("default"), &cfg)) { |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
121 | return 1; |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
122 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
123 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
124 | |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
125 | if(num_iopools == 0) { |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
126 | if(create_io_pool(cx_str("default"), 8)) { |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
127 | return 1; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
128 | } |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
129 | } |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
130 | |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
131 | return 0; |
30
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
132 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
133 | |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
134 | threadpool_t* get_default_threadpool() { |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
135 | return default_thread_pool; |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
136 | } |
27c7511c0e34
new proppatch, mkcol and delete method
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff
changeset
|
137 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
138 | threadpool_t* get_threadpool(cxstring name) { |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
139 | return cxMapGet(thread_pool_map, cx_hash_key_bytes((const unsigned char*)name.ptr, name.length)); |
37
360b9aabe17e
added support for asynchronous safs
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
30
diff
changeset
|
140 | } |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
141 | |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
142 | threadpool_t* get_default_iopool() { |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
143 | return default_io_pool; |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
144 | } |
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
145 | |
415
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
146 | threadpool_t* get_iopool(cxstring name) { |
d938228c382e
switch from ucx 2 to 3
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
357
diff
changeset
|
147 | return cxMapGet(io_pool_map, cx_hash_key_bytes((const unsigned char*)name.ptr, name.length)); |
190
1f73302461e0
adds IO threadpool
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
187
diff
changeset
|
148 | } |
556
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
149 | |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
150 | |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
151 | void shutdown_threadpools(void) { |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
152 | log_ereport(LOG_INFORM, "shutdown threadpools"); |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
153 | CxIterator i = cxMapIteratorValues(thread_pool_map); |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
154 | cx_foreach(threadpool_t*, tp, i) { |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
155 | threadpool_shutdown(tp); |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
156 | } |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
157 | i = cxMapIteratorValues(io_pool_map); |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
158 | cx_foreach(threadpool_t*, tp, i) { |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
159 | threadpool_shutdown(tp); |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
160 | } |
b036ccad4b49
improve webserver shutdown and free some stuff to make the valgrind output cleaner
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
490
diff
changeset
|
161 | } |