The term "main thread" can be ambiguous and confusing I'm afraid.
In emscripten we disambiguate we have two concepts of `main` thread. 1. The main *browser* thread (i.e. not a worker) 2. The main emscripten *runtime* thread (the thread where the emscripten module get first loaded). Normally on the web these two are the same thing since the emscripten module gets instantiated on the main browser thread. However if you load the emscripten module on a worker, then there will be no main browser thread, or at leat no main browser thread that is accessible to emscripten. When we say "proxy to main thread" or "MAIN_THREAD_EM_ASM" we are *always* talking about the main *runtime* thread, since that is the only thing that is guaranteed to exist. There are many APIs which won't work if your main runtime thread is not also the main browser thread (e.g anything related to the DOM). Note: I myself have been confused about these concepts in the past, and my knowledge could still have gaps but that is my understanding today. cheers, sam On Thu, Feb 9, 2023 at 12:18 AM Ilya Kantor <ilia...@gmail.com> wrote: > Hello, > > I'm reading the docs and getting confused, what the "Main thread" is? > > Sometimes it's referred to as the "Main browser thread", the term appears > in macroses such as MAIN_THREAD_EM_ASM. > > I see two possible explanations there, please tell me which one is correct? > > 1) The "main thread" is the main browser page thread that loaded WASM > webworker, the one with the "window" object. It has access to DOM etc. So > we can use it to work from DOM from C. > > It appears so from the page: > https://emscripten.org/docs/api_reference/emscripten.h.html?highlight=main_thread_async_em_asm#c.MAIN_THREAD_EM_ASM > > But it doesn't work for me like that, and I don't see any `postMessage` > calls in JS, how does Emscripten implement the interaction with the main > page? > > 2) The "main thread" is related to pthread usage: it's the all-parenting > pthread, when we have multiple pthreads running. Otherwise, if we're not > using pthreads, then it's irrelevant, the main thread is the only thread > anyway. > > In other words, the "main thread" is a pure pthreads concept, the > all-parenting thread. > > 3) ...Can it be sometimes 1) and sometimes 2)? =) > > Please help me to figure out. > > Thank you! > > Kind regards, > Ilya Kantor > > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to emscripten-discuss+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/029031da-a7f9-47dc-8db0-91a52672e9aan%40googlegroups.com > <https://groups.google.com/d/msgid/emscripten-discuss/029031da-a7f9-47dc-8db0-91a52672e9aan%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to emscripten-discuss+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAL_va28pE4CHpBr3h-6oGekgHtcnufajCPV08vCZSmr3kcA0KQ%40mail.gmail.com.