|
29 | 29 | #include "uv-common.h" |
30 | 30 | #include "common.h" |
31 | 31 |
|
| 32 | +#if defined(__wasi__) && defined(_REENTRANT) |
| 33 | +#define __EMNAPI_WASI_THREADS__ |
| 34 | +#endif |
| 35 | + |
32 | 36 | #define MAX_THREADPOOL_SIZE 1024 |
33 | 37 |
|
34 | 38 | static uv_once_t once = UV_ONCE_INIT; |
@@ -61,8 +65,9 @@ static void* worker(void* arg) { |
61 | 65 | struct uv__work* w; |
62 | 66 | QUEUE* q; |
63 | 67 | int is_slow_work; |
64 | | - |
| 68 | +#ifndef __EMNAPI_WASI_THREADS__ |
65 | 69 | uv_sem_post((uv_sem_t*) arg); |
| 70 | +#endif |
66 | 71 | arg = NULL; |
67 | 72 |
|
68 | 73 | uv_mutex_lock(&mutex); |
@@ -199,7 +204,9 @@ static void init_threads(void) { |
199 | 204 | #if !defined(EMNAPI_WORKER_POOL_SIZE) || !(EMNAPI_WORKER_POOL_SIZE > 0) |
200 | 205 | const char* val; |
201 | 206 | #endif |
| 207 | +#ifndef __EMNAPI_WASI_THREADS__ |
202 | 208 | uv_sem_t sem; |
| 209 | +#endif |
203 | 210 |
|
204 | 211 | #if defined(EMNAPI_WORKER_POOL_SIZE) && EMNAPI_WORKER_POOL_SIZE > 0 |
205 | 212 | nthreads = EMNAPI_WORKER_POOL_SIZE; |
@@ -233,20 +240,30 @@ static void init_threads(void) { |
233 | 240 | QUEUE_INIT(&slow_io_pending_wq); |
234 | 241 | QUEUE_INIT(&run_slow_work_message); |
235 | 242 |
|
| 243 | +#ifndef __EMNAPI_WASI_THREADS__ |
236 | 244 | if (uv_sem_init(&sem, 0)) |
237 | 245 | abort(); |
| 246 | +#endif |
238 | 247 |
|
| 248 | +#ifndef __EMNAPI_WASI_THREADS__ |
239 | 249 | for (i = 0; i < nthreads; i++) |
240 | 250 | if (uv_thread_create(threads + i, (uv_thread_cb) worker, &sem)) |
241 | 251 | abort(); |
| 252 | +#else |
| 253 | + for (i = 0; i < nthreads; i++) |
| 254 | + if (uv_thread_create(threads + i, (uv_thread_cb) worker, NULL)) |
| 255 | + abort(); |
| 256 | +#endif |
242 | 257 |
|
| 258 | +#ifndef __EMNAPI_WASI_THREADS__ |
243 | 259 | for (i = 0; i < nthreads; i++) |
244 | 260 | uv_sem_wait(&sem); |
245 | 261 |
|
246 | 262 | uv_sem_destroy(&sem); |
247 | 263 |
|
248 | 264 | for (i = 0; i < nthreads; i++) |
249 | 265 | _emnapi_worker_unref(*(threads + i)); |
| 266 | +#endif |
250 | 267 | } |
251 | 268 |
|
252 | 269 |
|
|
0 commit comments