Показать сообщение отдельно
  #8 (permalink)  
Старый 06.06.2024, 20:16
pvv pvv вне форума
Новичок на форуме
Отправить личное сообщение для pvv Посмотреть профиль Найти все сообщения от pvv
 
Регистрация: 08.05.2024
Сообщений: 7

С js более менее разобрался, всё работает, ещё раз спасибо Aetae.

Теперь настала очередь непосредственно webassembly, которого также корежит при вызове асинхронных функций.
int main(){
  int x = foo();
  bar(x);
}

Если foo() - асинхронная функция импортированная из JS, то bar будет вызван до того как вернётся foo...

И вот с этим уже официально предлагается бороться через https://web.dev/articles/asyncify, во всяком случае так emscripten вроде бы делает.
Что выглядит уже даже более коряво чем идея заклинить выполнение основного потока каким-нибудь воркером и дожидаясь в его выполнения в каком-нибудь Atomics.wait() "синхронно". По ходу ещё оказалось что sharedarraybuffer позапрещали из-за Spectre.

ткните меня, пожалуйста, в какую-нибудь простую, но рабочую в браузере реализацию чего-то такого:
Цитата:
наверное можно заернуть какую-то ересь с использованием service-worker: а именно сделать псевдофайл /wait.js, при запросе которого воркер становится остановку и ждёт сообщения о том что wasm загружен, после чего отмирает, и вставить оный сразу после скрипта который должен ждать...
Ответить с цитированием