emscripten-core / emscripten

Emscripten: An LLVM-to-WebAssembly Compiler
Other
25.89k stars 3.32k forks source link

How to avoid repeated downloading of dynamic library under multithreading #17537

Open AngenimyWhu opened 2 years ago

AngenimyWhu commented 2 years ago

Version of emscripten/emsdk: 3.1.15

If I use Multi-Thread and Side-Module, my project can run successful. But my dynamic libraries(about 30MB) will download some times, one in main thread and others by my worker.js(PTHREAD_POOL_SIZE=30), this will waste lots of time and network bandwidth(about 1G).

① But in fact, I should only need to load it once,it will be fast and more reasonable, how can I share thoes dynamic libraries for other thread? ② What's more, the path of the dynamic library has changed。 When I set my dynamic libraries as below. var Module = { dynamicLibraries : [ "libs/XXX.so", ..... ], } it downloads libraries from //libs in main thread, however,it downloads libraries from ///libs/ in worker.js thread。 so I need copyt it to other path.

sbc100 commented 2 years ago

Do your worker.js is somehow in a separate directory?

Are you writing dynamicLibraries yourself? Perhaps you could write code such that dynamicLibraries looks differently if ENVIRONMENT_IS_PTHREAD?