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: 24412|Respuesta: 1

[Fuente] La diferencia entre ManualResetEvent y AutoResetEvent aprendido por hilos de C#

[Copiar enlace]
Publicado en 31/5/2018 14:59:47 | | | |
Hablemos primero de ManualResetEvent, y intercalaré algo de contenido de AutoResetEvent durante la discusión para comparar:

ManualResetEvent puede bloquear uno o más hilos hasta que se reciba una señal que indique a ManualResetEvent que deje de bloquear el hilo actual.

Información sobre ManualResetEvent

.net/c# Hilos de hilos Suspender y Reanudar soluciones obsoletas
https://www.itsvse.com/thread-4769-1-1.html
(Fuente: Architect_Programmer)


Imaginemos que el objeto ManualResetEvent tiene una propiedad de tipo booleana, IsRelease, para controlar si bloquear el hilo actual. Podemos establecer esta propiedad al inicializar, como ManualResetEvent event=new ManualResetEvent(false); Esto indica que la propiedad predeterminada es bloquear el hilo actual.

Ejemplo de código:



Observa aquí una diferencia importante entre ManualResetEvent y AutoResetEvent:

El manual definitivamente enviará una señal tanto al hilo 1 como al rosco 2,El automático solo envía una señal a uno de ellos de forma aleatoria.

¿Por qué uno se llama manual y el otro automático? Creo que es una pregunta que mucha gente se hace, y ahora la analizaremos.

Solo now_manualResetEvent. Set(); Creo que todo el mundo entiende esta frase, que puede considerarse como una confirmación de la propiedad de IsRelease como verdadera

_manualResetEvent.EsperaOne(); Ya no bloquea el hilo 1 tras recibir una señal. El valor de IsRelease se mantiene durante todo el proceso después de eso.Si

Si quieres devolver el valor de IsRelease a false, debes llamar de nuevo al método _manualResetEvent.Reset().

Si es _autoResetEvent.set(), entonces _autoResetEvent.WaitOne() establecerá automáticamente el valor de IsRelease como falso.

Por eso uno se llama automático y el otro manual.



Código de prueba:







Anterior:. El componente de mapeo de objetos OOM más rápido de .NET, Tiny Mapper, en la práctica del proyecto
Próximo:Explicación detallada de la información de depuración de depuración en C#
 Propietario| Publicado en 18/12/2024 20:30:44 |
Tanto ManualResetEvent como AutoResetEvent heredan deEventoEsperaManejar, como se muestra en la figura siguiente:



Referencia:El inicio de sesión del hipervínculo es visible.

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