Tradução em progresso.

Esta é uma tecnologia experimental
Verifique a tabela de compatibilidade entre Navegadores cuidadosamente antes de usar essa funcionalidade em produção.

O objeto Atomics fornece operações atômicas como metodos estáticos. Eles são usados com objetos SharedArrayBuffer.

As operações atômicas estão localizadas no modulo Atomics. Diferente de outros global objects, Atomics não é um construtor. Você não deve usa-lo com o new operator ou invocar objetos Atomics como funções. Todas as propriedades e método do Atomics são estáticos (como é o caso com o objeto Math, por exemplo).

Métodos

Operações Atômicas

Quando a memória é compartilhada, multiplas threads podem ser lidas e escritas no mesmo dado da memória. Operações atômicas garantem que os valores previstos sejam lidos e escritos, estas operações são finalizadas antes da próxima operação iniciar e que as mesmas não sejam interrompidas.

Atomics.add()
Adiciona o valor recebido na posiçao recebida no array. Retorna o valor anterior nesta posição.
Atomics.and()
Calcula um bit a bit AND na posição recebida no array. Retorna o valor anterior nesta posição.
Atomics.compareExchange()
Armazena o valor recebido na posição recebida no array, se este foi igual ao valor recebido. Retorna o valor anterior nesta posição.
Atomics.exchange()
Armazena o valor recebido na posição recebida no array. Retorna o valor anterior.
Atomics.load()
Retorna o valor na posição recebida no array.
Atomics.or()
Calcula um bit a bit OR na posição recebida no array. Retorna o valor anterior nesta posição.
Atomics.store()
Armazena o valor recebido na posição recebida no array. Retorna o valor.
Atomics.sub()
Subtrai o valor recebido na posição recebida no array. Retorna o valor anterior nesta posição.
Atomics.xor()
Calcula um bit a bit XOR na posição recebida no array. Retorna o valor anterior nesta posição.

Wait e wake

Os métodos wait() e wake() são modelados no Linux futexes ("fast user-space mutex") e fornece formas de aguardar até que certas condições se tornem true e são tipicamente usadas como construtores de bloco.

Atomics.wait()

Verifica se a posição informada no array ainda contém a valor recebido e dorme à espera ou até o tempo limite. Retorna "ok", "not-equal", ou "timed-out". Se a espera não for permitida no agente de chamada ele irá lançar uma exceção de erro (muitos navegadores não permitem wait() na thread main do navegador).

Atomics.wake()
"Acorda" alguns agentes que estavam "dormindo" na lista de espera na posição recebida do array. Retorna o número de agentes que estão sendo "acordados".
Atomics.isLockFree(size)

Uma otimização primitiva que pode ser usada para determinar se deve ser usado lock ou operações atômicas. Retorna true, se uma operação atômica em matrizes de um dado tamanho do elemento vai ser implementado utilizando uma operação atômica de hardware (como oposição a lock). Só para experientes.

Especificações

Especificações Status Comentário
Unknown
The definition of 'Atomics' in that specification.
Desconhecido Definição inicial.

Compatibilidade nos navegadores

Estamos convertendo nossos dados de compatibilidade para o formato JSON. Esta tabela de compatibilidade ainda usa o formato antigo, pois ainda não convertemos os dados que ela contém. Descubra como você pode ajudar!

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support Não suportado [2] Não suportado 46 (46) [1] [3] Não suportado Não suportado Não suportado
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support Não suportado Não suportado 46.0 (46) [1] Não suportado Não suportado Não suportado

[1] This feature is disabled by a preference setting. In about:config, set javascript.options.shared_memory to true

[2] The implementation is under development and needs these runtime flags: --js-flags=--harmony-sharedarraybuffer --enable-blink-feature=SharedArrayBuffer

Observações de compatibilidade

[3] A especificação de compartilhamento de memória está sendo estabilizada. Anterior ao SpiderMonkey 48 (Firefox 48 / Thunderbird 48 / SeaMonkey 2.45), a última API e semântica não foram implementadas ainda. As alterações entre as versões 46 e 48 do Firefox são:

Veja Também

Etiquetas do documento e colaboradores

Colaboradores desta página: mdnwebdocs-bot, KennyMack
Última atualização por: mdnwebdocs-bot,