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

Vista: 19792|Resposta: 0

[Fonte] Uso do SyncRoot no StringDictionary

[Copiar link]
Publicado em 23/11/2016 14:26:38 | | | |

Programação orientada a objetos em C# oferece muitas classes de operações amigáveis para o usuário, agora este StringDictionary é uma coleção de classes que se especializam em armazenar strings como chaves e valores, o significado dessa classe é: C# sabe que string no tipo de valor é bastante usada, outros tipos de valor também podem ser convertidos em tipos de string correspondentes, esse é o significado desta coleção, mas você ainda pode usar outros objetos de coleção para substituí-la, mas preste atenção a um ponto, Se for armazenamento em string, isso pode reduzir a perda de memória e o tempo necessário para rodar o programa


O SyncRoot pode ser usado para sincronizar o acesso ao StringDictionary

Para ser direto, é o conceito de bloqueio, vamos escrever um programa para testá-lo:

O código é o seguinte:



Temos dois threads ao mesmo tempo para adicionar dados ao dicionário StringDictionary,

A diferença de tempo de execução entre a primeira e a segunda thread é de um segundo, para ampliar a diferença de tempo e evitar que a execução seja rápida demais.

Você pode ver que as threads foram para os dois métodos, e ao adicionar o segundo dado, eles ficaram esperando o primeiro dado ser adicionado antes de adicionar o segundo, e o tempo de adição é muito rápido.

Abaixo, vamos escrevê-la de uma forma diferente para facilitar a compreensão:





3 threads são abertos, os dados são adicionados, e os 3 threads são executados quase ao mesmo tempo, mas quando os dados são adicionados, cada um está com 10 segundos de intervalo.

Resumindo, ao acessar com múltiplas threads, podemos usar o SyncRoot para garantir a segurança das threads




Anterior:Como usar o WPF Trigger para trocar de botão
Próximo:c# Usar OCR para reconhecer imagens chinesas
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