Objetos de sincronización
Un objeto de sincronización es un objeto cuyo identificador se puede especificar en una de las funciones de espera 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 que se ha producido un evento a uno o varios subprocesos en espera. Para obtener más información, vea Objetos de eventos. |
Mutex | 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. |
Semaphore | 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 semáforos. |
Temporizador que se puede esperar | Notifica a uno o varios subprocesos en espera que ha llegado una hora especificada. Para obtener más información, vea Objetos de temporizador que se pueden esperar. |
Aunque está disponible para otros usos, también se pueden usar los siguientes objetos para la sincronización.
Object | Descripción |
---|---|
Notificación de cambio | Creado por la función FindFirstChangeNotification , su estado se establece en señalado cuando se produce un tipo de cambio especificado dentro de un directorio o árbol de directorios especificado. Para obtener más información, vea Obtener notificaciones de cambio de directorio. |
Entrada de 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ñalado cuando hay entradas no leídas 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, vea Aplicaciones en modo de caracteres. |
Trabajo | Creado mediante una llamada a la función CreateJobObject . El estado de un objeto de trabajo se establece en señalado cuando se finalizan todos sus procesos porque se ha superado el límite de tiempo de finalización del 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ón CreateMemoryResourceNotification . Su estado se establece en señalado 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 mediante una llamada 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, vea Procesos y subprocesos. |
Thread | Se crea cuando se crea un subproceso mediante una llamada a la función CreateProcess, CreateThread o 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 estructura SUPERPUESTA . 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ñalizara el estado del objeto.
Para obtener información adicional sobre las operaciones de E/S en archivos, canalizaciones con nombre o comunicaciones, vea Sincronización y entrada y salida superpuestas.