Multithreading 2/N: PROXY_TO_PTHREAD option #5527
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The initial work to get
--proxy-to-worker
option to play nice with-s USE_PTHREADS=1
was a dead end, because it led to having to do a call graph flow analysis of which compiled functions main thread might need, which became ridiculous. Instead, this PR implements another approach that ended up being successful.If -
s PROXY_TO_PTHREAD=1
option is passed, then the applicationmain()
function will be invoked in apthread_create()
d function. There is nothing much magical here, since developers can also do this by themselves, but this has the big advantage of not needing to have Emscripten-specific boilerprate code aroundmain()
to set up a worker context. Undoubtedly some users will want to avoid this and do their thread setups themselves, and there are still a lot of users who will want to continue to run the application main thread in the main browser thread, which is why we will have both options.