Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 17802|Respuesta: 0

[Comunicación] Cerradura C #

[Copiar enlace]
Publicado en 21/2/2019 9:43:39 | | |
1. ¿Por qué cerrar y qué está cerrado?

Cuando usamos hilos, la forma más eficiente es, por supuesto, asíncrona, es decir, cada hilo se ejecuta al mismo tiempo, sin depender unos de otros ni esperar. Sin embargo, cuando diferentes hilos necesitan acceder a un determinado recurso, se requiere un mecanismo de sincronización, es decir, al leer y escribir el mismo recurso, es necesario que el recurso solo sea operado por un hilo al mismo tiempo para asegurar que cada operación sea efectiva e inmediata, es decir, garantizar la atomicidad de su funcionamiento. lock es el método de sincronización más utilizado en C#, en el formato lock(objectA){codeB}.


lock(objetoA){códigoB} parece sencillo, pero en realidad tiene tres significados, lo cual es esencial para usarlo adecuadamente:
1. ¿Está bloqueado el objeto A? Si no, lo bloqueo, si no, espero a que liberen el objeto A.
2. Tras el bloqueo, otros hilos no pueden llamar a codeB ni usar objetoA durante la ejecución de codeB.
3. Tras ejecutar codeB, release objectA, y codeB pueden ser accedidos por otros hilos.

2. ¿Qué pasó con la cerradura() de esto?

Veamos un ejemplo:

En el hilo t1, LockMe llama a lock(this), es decir, c1 en la función principal, y al llamar a lock(c1) en el hilo principal, debe esperar a que se ejecute el bloque de bloqueo en t1 antes de acceder a c1, es decir, no se pueden completar todas las operaciones relacionadas con c1, así que vemos que incluso c1. No se ejecuta DoNotLockMe().





Anterior:C# en ArraySegment parte del array
Próximo:Práctica en profundidad de Spring Boot. Chen Shaojian y SpringBoot revelan + construyen rápidamente un sistema de microservicios
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com