Передача данных с помощью Emscripten Worker API без копирования

Есть ли способ заставить Emscripten передавать, а не копировать данные между веб-воркерами и основным потоком пользовательского интерфейса?

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

На самом деле, я думаю, что он копируется по крайней мере дважды: сначала браузером между потоками, а затем второй раз Emscripten, чтобы поместить его в управляемое Emscripten пространство кучи. И если вы хотите, чтобы данные продолжали сохраняться на принимающей стороне после обратного вызова, их нужно будет скопировать в третий раз, как согласно документации данные, передаваемые в обратный вызов, гарантированно существуют только во время обратного вызова.

Повторяю свой вопрос сверху: есть ли способ заставить Emscripten избежать всего этого копирования путем передачи, а не копирования данных между веб-воркерами и основным потоком пользовательского интерфейса?


person Michal Charemza    schedule 03.04.2015    source источник


Ответы (1)


Это возможно, если вы используете person Deathicon    schedule 01.09.2015