The upcoming solution for this type of problem is the SharedArrayBuffer specification, which allows Web Workers to share data and pointers directly. Though emscripten_call_worker() is not designed to work with SharedArrayBuffer. You can try creating multiple threads with the -s USE_PTHREADS=1 build mode, and run in a browser that supports SharedArrayBuffer, and then use the pthreads API to create multiple threads that can access pointers to classes like native multithreading does.
perjantai 11. elokuuta 2017 Alon Zakai <alonza...@gmail.com> kirjoitti: > Yes, objects like that won't automatically work properly with > emscripten_call_worker. That method just receives a pointer and a size, and > it copies those bytes. In this case, the std::vector (and maybe string) > refer to bytes allocated on the heap, and not inside the object itself. So > you'd need to make sure those are copied as well. > > On Fri, Aug 11, 2017 at 12:29 AM, <ilia.galas...@gmail.com > <javascript:_e(%7B%7D,'cvml','ilia.galas...@gmail.com');>> wrote: > >> Hi, >> I am practicing to call webworker inside C++ with >> emscripten_call_worker() and I want to pass complext object, lile >> class Object >> { >> std::vector<char> bytes; >> std::string name; >> cv::Mat image; >> }: >> >> Before passing I use memcpy to copy memory to char and pass it, but it >> looks like web worker loose some parts of bytes. When I try to get access >> to them in workers. Maybe I should add some flags, or I just cannot pass >> complex objects to worker? >> >> -- >> 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 >> <javascript:_e(%7B%7D,'cvml','emscripten-discuss%2bunsubscr...@googlegroups.com');> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- > 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 > <javascript:_e(%7B%7D,'cvml','emscripten-discuss%2bunsubscr...@googlegroups.com');> > . > For more options, visit https://groups.google.com/d/optout. > -- 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. For more options, visit https://groups.google.com/d/optout.