|
@@ -587,6 +587,9 @@ begin
|
|
UnLockMuTex(PWasmThread(ThreadHandle)^.Running);
|
|
UnLockMuTex(PWasmThread(ThreadHandle)^.Running);
|
|
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('WaitForThreadTerminate('+IntToStr(PtrUINT(TH))+') : Lock released');{$ENDIF}
|
|
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('WaitForThreadTerminate('+IntToStr(PtrUINT(TH))+') : Lock released');{$ENDIF}
|
|
WasiWaitForThreadTerminate:=DWord(Res);
|
|
WasiWaitForThreadTerminate:=DWord(Res);
|
|
|
|
+ {$IFDEF DEBUGWASMTHREADS}DebugWriteln('WaitForThreadTerminate('+IntToStr(PtrUINT(TH))+') : Waiting until ThreadHasFinished becomes true');{$ENDIF}
|
|
|
|
+ repeat
|
|
|
|
+ until fpc_wasm32_i32_atomic_load8_u(@P^.ThreadHasFinished)<>0;
|
|
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('WaitForThreadTerminate('+IntToStr(PtrUINT(TH))+') : FreeStackAndTlsBlock');{$ENDIF}
|
|
{$IFDEF DEBUGWASMTHREADS}DebugWriteln('WaitForThreadTerminate('+IntToStr(PtrUINT(TH))+') : FreeStackAndTlsBlock');{$ENDIF}
|
|
FreeStackAndTlsBlock(TH);
|
|
FreeStackAndTlsBlock(TH);
|
|
end;
|
|
end;
|