Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 24045|Resposta: 0

[Programa de Console] aprendizado volátil de palavras-chave em .net/C#

[Copiar link]
Publicado em 23/05/2018 11:23:40 | | | |
MS Link:O login do hiperlink está visível.

A palavra-chave volátil indica que um campo pode ser modificado por múltiplas threads executando ao mesmo tempo. Campos declarados como voláteis não são restringidos pela otimização do compilador (assumindo que sejam acessados por uma única thread). Isso garante que o campo seja renderizado com o valor mais recente o tempo todo.

O modificador volátil é tipicamente usado para campos acessados por múltiplas threads, mas que não serializam o acesso usando uma instrução lock.

Palavras-chave voláteis podem ser aplicadas aos seguintes tipos de campos:

  • Tipo de citação.
  • Tipo de ponteiro (em um contexto inseguro). Note que, embora o ponteiro em si possa ser mutável, o objeto para o qual ele aponta não pode ser mutável. Em outras palavras, "apontador para um objeto mutável" não pode ser declarado.
  • Tipos como sbyte, byte, short, ushort, int, uint, char, float e bool.
  • Um tipo de enum com um dos seguintes tipos base: byte, sbyte, short, ushort, int ou uint.
  • Parâmetros genéricos de tipo que são conhecidos por serem tipos de referência.
  • IntPtr e UIntPtr.


Palavras-chave variáveis só podem ser aplicadas a campos de uma classe ou estrutura.Variáveis locais não podem ser declaradas como voláteis


Chega de bobagens, escreva um loop para testar:

Vamos testar 10.000 vezes em loop,descobriu que a saída dos valores de a está correta, mas,Isso não explicaVolátil é seguro para roscaPorque, se você testar várias vezes, vai perceber que haverá erros de cálculo! Porque há chance de um resultado correto e uma chance de resultado errado



Código:



Vamos testar 100.000 loops novamente, e podemos descobrir que o valor de a está incorreto, porque quanto menor o número de loops, menor a chance de erro, e o erro não é tão óbvio, assim como não houve erro após 10.000 loops agora há pouco.

Neste momento, adicionamos um bloqueio para testar, e pode-se ver que o valor de a é calculado corretamente, como esperávamos.



Código:



Resumo: volátil não garante a segurança da thread, como você pode ver no exemplo acima.




Anterior:Baixe a ferramenta de captura de pacotes smsniff versão chinesa 2.0
Próximo:VS Debug Remote Solução "operação de depuração demora mais do que o esperado"
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com