Есть ли способ заставить Emscripten передавать, а не копировать данные между веб-воркерами и основным потоком пользовательского интерфейса?
У Emscripten есть API, который управляет обменом данными между Web Workers, который Я считаю, что просто использует postMessage
/ onmessage
скрытый механизм. При поиске в источнике Emscripten Worker API > не использует параметр transferList
при вызове postMessage
, поэтому данные копируются.
На самом деле, я думаю, что он копируется по крайней мере дважды: сначала браузером между потоками, а затем второй раз Emscripten, чтобы поместить его в управляемое Emscripten пространство кучи. И если вы хотите, чтобы данные продолжали сохраняться на принимающей стороне после обратного вызова, их нужно будет скопировать в третий раз, как согласно документации данные, передаваемые в обратный вызов, гарантированно существуют только во время обратного вызова.
Повторяю свой вопрос сверху: есть ли способ заставить Emscripten избежать всего этого копирования путем передачи, а не копирования данных между веб-воркерами и основным потоком пользовательского интерфейса?