API de grupo de subprocesos
La interfaz de programación de aplicaciones (API) del grupo de subprocesos usa un diseño basado en objetos. Cada uno de los objetos siguientes se representa mediante una estructura de datos en modo de usuario:
- Un objeto pool es un conjunto de subprocesos de trabajo que se pueden usar para realizar el trabajo. Cada proceso puede crear varios grupos aislados con características diferentes según sea necesario. También hay un grupo predeterminado para cada proceso.
- Un grupo de limpieza está asociado a un conjunto de objetos que generan devoluciones de llamada. Las funciones existen para esperar y liberar todos los objetos que son miembros de cada grupo de limpieza. Esto libera a la aplicación de realizar un seguimiento de todos los objetos que ha creado.
- Un objeto de trabajo se asigna a un grupo y, opcionalmente, a un grupo de limpieza. Se puede publicar, lo que hace que un subproceso de trabajo del grupo ejecute su devolución de llamada. Un objeto de trabajo puede tener varios puestos pendientes; cada genera una devolución de llamada. No se puede producir un error en la operación posterior debido a la falta de recursos.
- Un objeto de temporizador controla la programación de devoluciones de llamada. Cada vez que expira un temporizador, su devolución de llamada se publica en su grupo de trabajo. No se puede producir un error al establecer un temporizador debido a la falta de recursos.
- Un objeto wait hace que un subproceso de espera espere en un identificador de espera. Una vez que se cumpla la espera o expire el período de tiempo de espera, el subproceso de espera publica la devolución de llamada de los objetos de espera en el grupo de trabajo de la espera. No se puede producir un error al establecer una espera debido a la falta de recursos.
- Un objeto de E/S asocia un identificador de archivo con el puerto de finalización de E/S para el grupo de subprocesos. Cuando se completa una operación de E/S asincrónica, un subproceso de trabajo recoge el estado de la operación y llama a la devolución de llamada del objeto de E/S.
En la tabla siguiente se describen las características de las API del grupo de subprocesos originales y actuales.
Característica | Original API | API actual |
---|---|---|
Sincronización |
RegisterWaitForSingleObject unregisterWaitEx |
closeThreadpoolWait CreateThreadpoolWait SetThreadpoolWait WaitForThreadpoolWaitCallbacks |
Trabajo |
QueueUserWorkItem |
CloseThreadpoolWork CreateThreadpoolWork SubmitThreadpoolWork trySubmitThreadpoolCallback WaitForThreadpoolWorkCallbacks |
Temporizador |
CreateTimerQueue CreateTimerQueueTimer ChangeTimerQueueTimer DeleteTimerQueueTimer DeleteTimerQueueEx |
CloseThreadpoolTimer CreateThreadpoolTimer IsThreadpoolTimerSet SetThreadpoolTimer WaitForThreadpoolTimerCallbacks |
E/S |
BindIoCompletionCallback |
CancelThreadpoolIo CloseThreadpoolIo CreateThreadpoolIo StartThreadpoolIo WaitForThreadpoolIoCallbacks |
Grupo de limpieza |
CloseThreadpoolCleanupGroup CloseThreadpoolCleanupGroupMembers CreateThreadpoolCleanupGroup |
|
Piscina |
CloseThreadpool CreateThreadpool SetThreadpoolThreadMaximum SetThreadpoolThreadMinimum |
|
Entorno de devolución de llamada |
DestroyThreadpoolEnvironment InitializeThreadpoolEnvironment setThreadpoolCallbackCleanupGroup SetThreadpoolCallbackLibrary SetThreadpoolCallbackPool SetThreadpoolCallbackPriority setThreadpoolCallbackRunsLong |
|
Callback |
callbackMayRunLong |
|
Limpieza de devolución de llamada |
DisassociateCurrentThreadFromCallback FreeLibraryWhenCallbackReturns LeaveCriticalSectionWhenCallbackReturns ReleaseMutexWhenCallbackReturns ReleaseSemaphoreWhenCallbackReturns setEventWhenCallbackReturns |
Temas relacionados