|
26 | 26 | var LibraryPThread = { |
27 | 27 | $PThread__postset: 'PThread.init();', |
28 | 28 | $PThread__deps: ['_emscripten_thread_init', |
29 | | - '$killThread', |
30 | | - '$cancelThread', '$cleanupThread', '$zeroMemory', |
| 29 | + '$zeroMemory', |
| 30 | + '$cleanupThread', |
31 | 31 | #if MAIN_MODULE |
32 | 32 | '$markAsFinshed', |
33 | 33 | #endif |
@@ -280,10 +280,6 @@ var LibraryPThread = { |
280 | 280 | } else if (cmd === 'markAsFinshed') { |
281 | 281 | markAsFinshed(d['thread']); |
282 | 282 | #endif |
283 | | - } else if (cmd === 'killThread') { |
284 | | - killThread(d['thread']); |
285 | | - } else if (cmd === 'cancelThread') { |
286 | | - cancelThread(d['thread']); |
287 | 283 | } else if (cmd === 'loaded') { |
288 | 284 | worker.loaded = true; |
289 | 285 | #if ENVIRONMENT_MAY_BE_NODE && PTHREAD_POOL_SIZE |
@@ -562,6 +558,9 @@ var LibraryPThread = { |
562 | 558 | // entry point, calls pthread_exit, or acts upon a cancellation. |
563 | 559 | // Detached threads are responsible for calling this themselves, |
564 | 560 | // otherwise pthread_join is responsible for calling this. |
| 561 | + // Note: we can't use the 'async' proxy mechanism here since this can be |
| 562 | + // called from _emscripten_thread_exit after the current thread is been |
| 563 | + // destroyed (i.e. we can't call back into native code at this point). |
565 | 564 | #if PTHREADS_DEBUG |
566 | 565 | dbg('__emscripten_thread_cleanup: ' + ptrToString(thread)) |
567 | 566 | #endif |
@@ -924,13 +923,13 @@ var LibraryPThread = { |
924 | 923 | #endif |
925 | 924 | }, |
926 | 925 |
|
| 926 | + __pthread_kill_js__deps: ['$cancelThread', '$killThread'], |
| 927 | + __pthread_kill_js__proxy: 'async', |
927 | 928 | __pthread_kill_js: function(thread, signal) { |
928 | 929 | if (signal === {{{ cDefs.SIGCANCEL }}}) { // Used by pthread_cancel in musl |
929 | | - if (!ENVIRONMENT_IS_PTHREAD) cancelThread(thread); |
930 | | - else postMessage({ 'cmd': 'cancelThread', 'thread': thread }); |
| 930 | + cancelThread(thread); |
931 | 931 | } else { |
932 | | - if (!ENVIRONMENT_IS_PTHREAD) killThread(thread); |
933 | | - else postMessage({ 'cmd': 'killThread', 'thread': thread }); |
| 932 | + killThread(thread); |
934 | 933 | } |
935 | 934 | return 0; |
936 | 935 | }, |
|
0 commit comments