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

Vista: 17802|Resposta: 0

[Comunicação] Eclusa C #

[Copiar link]
Publicado em 21/02/2019 09:43:39 | | |
1. Por que trancar e o que está trancado?

Quando usamos threads, a forma mais eficiente é, claro, assíncrona, ou seja, cada thread roda ao mesmo tempo, sem depender umas das outras e esperar. No entanto, quando diferentes threads precisam acessar um determinado recurso, é necessário um mecanismo de sincronização, ou seja, ao ler e escrever o mesmo recurso, é necessário que o recurso seja operado apenas por uma thread ao mesmo tempo para garantir que cada operação seja eficaz e imediata, ou seja, para garantir a atomicidade de sua operação. lock é o método de sincronização mais comumente usado em C#, no formato lock(objectA){codeB}.


lock(objectA){codeB} parece simples, mas na verdade tem três significados, o que é essencial para usá-lo adequadamente:
1. O objeto A está trancado? Se não, vou bloquear, caso contrário espero até o objeto A ser liberado.
2. Após o travamento, outras threads não podem chamar o codeB nem usar o objecto A durante a execução do codeB.
3. Após executar o codeB, o objeto de liberação A, e o codeB pode ser acessado por outras threads.

2. O que aconteceu com essa fechadura?

Vamos ver um exemplo:

No thread t1, o LockMe chama lock(this), ou seja, c1 na função principal, e ao chamar lock(c1) na thread principal, ele deve esperar que o bloco lock em t1 seja executado antes de acessar c1, ou seja, todas as operações relacionadas a c1 não podem ser completas, então vemos que até c1. DoNotLockMe() não é executado.





Anterior:C# em ArraySegment parte do array
Próximo:Prática aprofundada do Spring Boot. Chen Shaojian e SpringBoot revelam + rapidamente construíram um sistema de microserviços
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