@@ -72,7 +72,15 @@ function spawnThread (startArg: number, threadId?: Int32Array): number {
7272 const threadIdBuffer = new SharedArrayBuffer ( 4 )
7373 const id = new Int32Array ( threadIdBuffer )
7474 Atomics . store ( id , 0 , - 1 )
75- postMessage ( { cmd : 'thread-spawn' , startArg, threadId : id } )
75+ postMessage ( {
76+ __emnapi__ : {
77+ type : 'thread-spawn' ,
78+ payload : {
79+ startArg,
80+ threadId : id
81+ }
82+ }
83+ } )
7684 Atomics . wait ( id , 0 , - 1 )
7785 const tid = Atomics . load ( id , 0 )
7886 return tid
@@ -84,16 +92,19 @@ function spawnThread (startArg: number, threadId?: Int32Array): number {
8492 const worker = onCreateWorker ( )
8593
8694 worker . onmessage = function ( e : any ) {
87- if ( e . data . cmd === 'loaded' ) {
88- if ( typeof worker . unref === 'function' ) {
89- worker . unref ( )
90- }
91- if ( ! e . data . success ) {
92- err ( e . data . message )
93- err ( e . data . stack )
95+ if ( e . data . __emnapi__ ) {
96+ const type = e . data . __emnapi__ . type
97+ const payload = e . data . __emnapi__ . payload
98+ if ( type === 'loaded' ) {
99+ if ( typeof worker . unref === 'function' ) {
100+ worker . unref ( )
101+ }
102+ if ( payload . err ) {
103+ err ( payload . err )
104+ }
105+ } else if ( type === 'thread-spawn' ) {
106+ spawnThread ( payload . startArg , payload . threadId )
94107 }
95- } else if ( e . data . cmd === 'thread-spawn' ) {
96- spawnThread ( e . data . startArg , e . data . threadId )
97108 }
98109 }
99110 worker . onerror = ( e : any ) => {
@@ -121,19 +132,22 @@ function spawnThread (startArg: number, threadId?: Int32Array): number {
121132 nextTid ++
122133 // napiModule.PThread.pthreads[tid] = worker
123134 // worker.pthread_ptr = tid
124- const payload = {
125- cmd : 'load' ,
126- wasmModule,
127- wasmMemory,
128- tid,
129- arg : startArg
135+ const msg = {
136+ __emnapi__ : {
137+ type : 'load' ,
138+ payload : {
139+ wasmModule,
140+ wasmMemory,
141+ tid,
142+ arg : startArg
143+ }
144+ }
130145 }
131- // console.log(payload)
132146 if ( threadId ) {
133147 Atomics . store ( threadId , 0 , tid )
134148 Atomics . notify ( threadId , 0 )
135149 }
136- worker . postMessage ( payload )
150+ worker . postMessage ( msg )
137151 return tid
138152}
139153napiModule . spawnThread = spawnThread
0 commit comments