Compartir a través de


Objetos de sincronización

Un objeto de sincronización es un objeto cuyo identificador se puede especificar en una de las funciones de espera de para coordinar la ejecución de varios subprocesos. Más de un proceso puede tener un identificador para el mismo objeto de sincronización, lo que hace posible la sincronización entre procesos.

Los siguientes tipos de objeto se proporcionan exclusivamente para la sincronización.

Tipo Descripción
Evento Notifica a uno o varios subprocesos en espera que se ha producido un evento. Para obtener más información, vea objetos de eventos.
Exclusión mutua Solo puede ser propiedad de un subproceso a la vez, lo que permite a los subprocesos coordinar el acceso mutuamente exclusivo a un recurso compartido. Para obtener más información, vea Objetos de exclusión mutua.
Semáforo Mantiene un recuento entre cero y algún valor máximo, lo que limita el número de subprocesos que acceden simultáneamente a un recurso compartido. Para obtener más información, vea Objetos de semáforo.
Temporizador que se puede esperar Notifica a uno o varios subprocesos en espera que haya llegado una hora especificada. Para obtener más información, vea objetos de temporizador en espera.

 

Aunque está disponible para otros usos, también se pueden usar los siguientes objetos para la sincronización.

Objeto Descripción
Notificación de cambios Creado por la función FindFirstChangeNotification, su estado se establece en señalizado cuando se produce un tipo de cambio especificado en un directorio o árbol de directorios especificado. Para obtener más información, vea Obtener notificaciones de cambio de directorio.
Entrada de la consola Se crea cuando se crea una consola. La función CreateFile devuelve el identificador a la entrada de la consola cuando se especifica CONIN$ o mediante la función GetStdHandle. Su estado se establece en señalizado cuando hay una entrada no leída en el búfer de entrada de la consola y se establece en sin signo cuando el búfer de entrada está vacío. Para obtener más información sobre las consolas, consulte Character-Mode Applications
Trabajo Creado llamando a la funciónCreateJobObject. El estado de un objeto de trabajo se establece en señalizado cuando se finalizan todos sus procesos porque se ha superado el límite de tiempo de fin de trabajo especificado. Para obtener más información sobre los objetos de trabajo, vea Objetos de trabajo.
Notificación de recursos de memoria Creado por la funcióncreateMemoryResourceNotification. Su estado se establece en señalizado cuando se produce un tipo de cambio especificado dentro de la memoria física. Para obtener más información sobre la memoria, consulte administración de memoria.
Proceso Creado llamando a la función CreateProcess. Su estado se establece en sin signo mientras se ejecuta el proceso y se establece en señalizado cuando finaliza el proceso. Para obtener más información sobre los procesos, consulte Procesos y subprocesos.
Hilo Se crea cuando se crea un nuevo subproceso llamando a la función CreateProcess, CreateThreado CreateRemoteThread. Su estado se establece en sin signo mientras se ejecuta el subproceso y se establece en señalizado cuando finaliza el subproceso. Para obtener más información sobre los subprocesos, vea Procesos y subprocesos.

 

En algunas circunstancias, también puede usar un archivo, una canalización con nombre o un dispositivo de comunicaciones como un objeto de sincronización; sin embargo, se desaconseja su uso con este fin. En su lugar, use E/S asincrónica y espere en el objeto de evento establecido en la estructuraSUPERPUESTA. Es más seguro usar el objeto de evento debido a la confusión que puede producirse cuando se realizan varias operaciones superpuestas simultáneas en el mismo archivo, canalización con nombre o dispositivo de comunicaciones. En esta situación, no hay ninguna manera de saber qué operación provocó que se señale el estado del objeto.

Para obtener información adicional sobre las operaciones de E/S en archivos, canalizaciones con nombre o comunicaciones, consulte Sincronización y Entrada superpuesta y Salida.