C'è un modo per ottenere Emscripten per trasferire e non copiare i dati tra gli operatori Web e il thread principale dell'interfaccia utente?Trasferimento dei dati utilizzando Emscripten Worker API senza copiare
Emscripten ha uno API that manages communication between Web Workers, che a mio avviso utilizza solo il meccanismo postMessage
/onmessage
sotto il cofano. Cercando nella fonte per il Emscripten Worker API, sembra che non usi l'opzione transferList
quando chiama postMessage
, e così i dati vengono copiati.
In realtà, penso che venga copiato almeno due volte: prima dal browser tra i thread e quindi uno second time by Emscripten per farlo entrare nello spazio-heap gestito da Emscripten. E se vuoi che i dati continuino a sopravvivere sul lato ricevente dopo la richiamata, dovrebbe essere copiato una terza volta, come according to the docs i dati passati al callback sono garantiti solo durante la richiamata.
Ripetere la mia domanda dall'alto: c'è un modo per ottenere Emscripten per evitare tutta questa copia trasferendo, e non copiando, i dati tra web worker e il thread principale dell'interfaccia utente?