2010-09-16 9 views
7

¿Por qué necesitamos Mutex y eventos en Windows? En el sentido, ¿no podrían las ventanas tener solo Mutex? ¿Qué se puede hacer con los eventos que no se pueden hacer con Mutex?Mutex y evento en Windows

Respuesta

9

Eventos permite que los hilos se bloqueen hasta que se transmita algún evento (de ahí el nombre). Bloquear en un evento significa "Despiértame cuando algo sucedió"; esperas que te duerman. Los eventos son un mecanismo de señalización y brindan soporte para esto que no se encuentra en los mutex, como ser capaz de borrar la señal automáticamente tan pronto como alguien que la atendió fue despertado. Además, la API permite bloquear hasta uno de o todos los se señalan varios eventos.

El mutex (exclusión mutua), por otro lado, es un mecanismo de coordinación con ámbito para recursos compartidos. Piensa en la transacción. No esperas esperar, pero quieres acceder a un recurso compartido, y solo en el caso de que otros ya estén accediendo, estás bloqueando.

Si intentó simular un evento utilizando un mutex, se enfrentaría al problema de que tan pronto como adquirió el bloqueo (cuando debería significar "evento señalado"), está manteniendo a todos los demás hasta que lo libere bloquear. Esa no es la semántica de señalar un evento; puede permanecer publicado, y las "puertas" estarán abiertas para cada prueba de hilo para el evento, sin adquirir bloqueos.

+0

"es un mecanismo de coordinación de ámbito para recursos compartidos. Think transaction" ... escribiste [this] (http://www.differencebetween.net/miscellaneous/difference-between-mutex-and-event/) como ¿bien? –

1

Mutex dedicado para la sincronización entre procesos. Este es un objeto en modo núcleo. Eventos para la sincronización multiproceso dentro de un proceso. Este es un objeto en modo usuario.

objeto Mutex es muy general y pesado, por otro lado el objeto Evento es mucho más ligero. En la mayoría de las situaciones, debe utilizar la sincronización de modo de usuario, ya que proporciona menos ciclos de CPU.

+0

Opps (perdida ... – yozhik