Diferencia entre mutex y evento
- 1063
- 324
- Miguel Arias
Mutex vs evento
En C#, hay muchas opciones de sincronización de hilo diferentes. Los dos más utilizados son mutex y evento. ¿Cuál es exactamente la diferencia entre estos dos?? Cual es una mejor opción?
La opción de evento puede dar a los subprocesos la opción de bloquear hasta que se transmite un evento, por lo que el nombre "Evento."Es lo mismo que poner algo para dormir y solo despertarlo cuando sucede algo significativo. Los eventos son diferentes a los mutexes porque los mutexes no tienen la opción o función de señalización. Los eventos pueden eliminar la señal una vez que alguien que pudo esperar ha sido despertado. Incluso las API pueden permitir que la opción se bloquee hasta que uno o todos los diferentes eventos se señalen. Además, los eventos son objetos de kernel. No son "más ligeros" en comparación con los mutexes. Un evento es básicamente un objeto de núcleo que tiene dos estados. Normalmente, un evento indica la llegada de un evento y, a veces, incluso el final de una operación de E/S.
"Mutex" significa exclusión mutua. Es una forma de mecanismo de coordinación de alcance para los recursos que se comparten. Piense en ello como una forma de transacción. No está obligado a esperar, aunque desea acceder a algunos recursos compartidos (solo en el caso de que otros ya están accediendo a él) está bloqueando. Un mutex consta de dos estados, aunque existe para poner en vigencia una exclusión mutua. Esto es para cuando desea proteger un tramo de código que generalmente actualiza un recurso compartido de la parte en la que se afirma el mutex a la parte en la que se liberará. Esto lleva al hecho de que ningún otro hilo puede pasar a través de la sección.
Las personas que han intentado simular un evento con la ayuda de un mutex tuvieron que encontrar el problema en el que se adquiere la cerradura o se señaló el evento, la persona mantiene a todos los demás hasta que se libere el bloqueo. Esta no es la semántica de un evento que se está señalando. Un evento puede permanecer publicado y una forma de puerta estará disponible para todas las pruebas de hilo en caso de que no tenga bloqueos. Mutex comprometido con la sincronización de interprocesos está en objeto en modo núcleo. Los eventos hechos para la sincronización multiproceso en un método están en el objeto en modo de usuario.
El objeto mutex es demasiado pesado y demasiado general. Los objetos de eventos son mucho más ligeros. La sincronización en modo de usuario se usa en la mayoría de las situaciones debido a la razón por la que proporciona menos ciclos de CPU. Mutex se parece mucho a una sección crítica y se utiliza para sincronizar el acceso a los recursos que se comparten. Los eventos tienen una función totalmente diferente porque se utilizan para sincronizar tareas o para la gestión de la programación de tareas para algunas personas.
Los eventos son más una variable de condición, a diferencia de Mutex, que es más como un
monitorear en parte de la terminología, o puede ser una forma tradicional de semáforo/mutex.
Resumen:
1.La opción de evento puede dar a los subprocesos la opción de bloquear hasta que se transmite un evento, por lo tanto, el nombre "Evento."
2.Un evento es básicamente un objeto de núcleo que tiene dos estados. Normalmente, un evento indica la llegada de un evento y, a veces, incluso el final de una operación de E/S.
3."Mutex" significa exclusión mutua. Es una forma de mecanismo de coordinación de alcance para los recursos que se comparten.
4.Mutex comprometido con la sincronización de interprocesos está en objeto en modo núcleo. Los eventos hechos para la sincronización multiproceso en un método están en el objeto en modo de usuario.
5.Los eventos son más una variable de condición, a diferencia del mutex, que es más como un
monitorear en parte de la terminología, o puede ser una forma tradicional de semáforo/mutex.