Design: Memória compartilhada e atômica

Criado em 20 jul. 2016  ·  5Comentários  ·  Fonte: WebAssembly/design

Comentários muito úteis

@chicoxyzzy , houve uma longa discussão sobre sab + wasm aqui: https://github.com/tc39/ecmascript_sharedmem/issues/59

@taisel , agora estou sendo pedante, mas ainda assim: as "limitações do thread principal" não são tecnicamente parte dessa especificação. A especificação permite que alguns encadeamentos recusem o bloqueio (por critérios escolhidos pela implementação), e claramente essa facilidade é motivada pelos encadeamentos principais do navegador, mas o uso de JS + memória compartilhada em outra configuração que o navegador não precisa tem essa limitação. Não vejo como wasm está em qualquer situação diferente. Além disso, pude ver alguns tipos de trabalhadores, como SharedWorkers, usando memória compartilhada, mas não tendo permissão para bloquear.

Na verdade, o TC39 exigir que os navegadores permitissem o bloqueio no encadeamento principal não levaria a nada frutífero, apenas à contenda, e provavelmente colocaria em risco a implementação de toda a proposta de memória compartilhada. O que temos agora é uma extensão bastante conservadora da linguagem e dos navegadores que se ajusta ao ecossistema da web existente. Sabemos que o proxy pode resolver alguns problemas; sabemos que o bloqueio "assimétrico" (bloqueios de trabalhadores, mas o thread principal não) pode resolver outros problemas; precisamos ter alguma experiência com isso para descobrir onde estão os verdadeiros pontos fracos e, então, ver como resolvê-los. Tentar forçar o bloqueio no thread principal é a opção nuclear, neste estágio.

Todos 5 comentários

Minha pergunta é: Todos estão bem em copiar as principais limitações do thread nessa especificação para o WASM?

@chicoxyzzy , houve uma longa discussão sobre sab + wasm aqui: https://github.com/tc39/ecmascript_sharedmem/issues/59

@taisel , agora estou sendo pedante, mas ainda assim: as "limitações do thread principal" não são tecnicamente parte dessa especificação. A especificação permite que alguns encadeamentos recusem o bloqueio (por critérios escolhidos pela implementação), e claramente essa facilidade é motivada pelos encadeamentos principais do navegador, mas o uso de JS + memória compartilhada em outra configuração que o navegador não precisa tem essa limitação. Não vejo como wasm está em qualquer situação diferente. Além disso, pude ver alguns tipos de trabalhadores, como SharedWorkers, usando memória compartilhada, mas não tendo permissão para bloquear.

Na verdade, o TC39 exigir que os navegadores permitissem o bloqueio no encadeamento principal não levaria a nada frutífero, apenas à contenda, e provavelmente colocaria em risco a implementação de toda a proposta de memória compartilhada. O que temos agora é uma extensão bastante conservadora da linguagem e dos navegadores que se ajusta ao ecossistema da web existente. Sabemos que o proxy pode resolver alguns problemas; sabemos que o bloqueio "assimétrico" (bloqueios de trabalhadores, mas o thread principal não) pode resolver outros problemas; precisamos ter alguma experiência com isso para descobrir onde estão os verdadeiros pontos fracos e, então, ver como resolvê-los. Tentar forçar o bloqueio no thread principal é a opção nuclear, neste estágio.

@ lars-t-hansen Sim, e eu reiteramos essa limitação suave para encorajar a discussão.

Ainda há um grupo de pessoas que pensei que gostariam de fazer a portabilidade o mais indolor possível, e não conheço muitas concessões que o comitê WASM possa querer fazer em sua direção.

Para adicionar ao acima, a seção WebAssembly de Discussion.md tem um bom resumo da discussão sab + wasm.

A proposta de threading inicial é projetada para corresponder ao comportamento dos trabalhadores SAB +, portanto, é improvável que abale o barco aqui. Falamos sobre ter encadeamentos "puros wasm", que não têm um contexto JavaScript, mas decidimos que isso seria melhor abordado depois que atingirmos a paridade de recursos com JavaScript + SAB.

Além disso, a especificação html agora está integrada com o bloqueio WRT da Atomics.wait ).

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

frehberg picture frehberg  ·  6Comentários

thysultan picture thysultan  ·  4Comentários

JimmyVV picture JimmyVV  ·  4Comentários

nikhedonia picture nikhedonia  ·  7Comentários

beriberikix picture beriberikix  ·  7Comentários