Atomics

Esta tradução está incompleta. Por favor, ajude a traduzir este artigo.

This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.

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
ECMAScript Shared Memory and Atomics
The definition of 'Atomics' in that specification.
Draft Definição inicial.

Compatibilidade nos navegadores

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: KennyMack
 Última atualização por: KennyMack,