Compartir a través de


enumeración WS_CALLBACK_MODEL (webservices.h)

Especifica el comportamiento de subprocesos de una devolución de llamada (por ejemplo, un WS_ASYNC_CALLBACK).

Syntax

typedef enum {
  WS_SHORT_CALLBACK = 0,
  WS_LONG_CALLBACK = 1
} WS_CALLBACK_MODEL;

Constantes

 
WS_SHORT_CALLBACK
Valor: 0
Este valor se usa para indicar que se invoca una devolución de llamada abreviada.


Cuando se invoca una devolución de llamada corta, debe evitar cálculos largos o largos.
las llamadas de bloqueo para que pueda volver al autor de la llamada rápidamente. Durante el tiempo
que una devolución de llamada se está ejecutando brevemente, es posible que otros elementos de trabajo no puedan ser
desqueued en el proceso. Esto puede provocar un interbloqueo de hambre, un
un sistema que no responde o un sistema infrautilizado.


Si es necesario realizar E/S dentro de una devolución de llamada que se invocó corta, el procedimiento recomendado es
para usar E/S asincrónica (en lugar de E/S sincrónica), para evitar llamadas de bloqueo largas.
WS_LONG_CALLBACK
Valor: 1
Este valor se usa para indicar que una devolución de llamada se invoca long.


Una devolución de llamada invocada long no es necesaria para volver al autor de la llamada rápidamente.


Sin embargo, las devoluciones de llamada largas son un recurso limitado, por lo que no siempre es posible
para invocar una devolución de llamada long.


Antes de invocar una devolución de llamada larga, el autor de la llamada debe asegurarse de que hay otro subproceso.
disponible para el trabajo de puesta en cola según sea necesario. Por ejemplo, si un llamador necesita crear
un subproceso pero no puede hacerlo, debe invocar la devolución de llamada abreviada.


Todas las devoluciones de llamada deben ser capaces de tratar de invocarse breves y largas:

  • Una devolución de llamada que se invoca corta, pero requiere larga, puede interpretarla como una
    condición de error, probablemente debido a recursos bajos. Por ejemplo, llamar a CreateThread o
    QueueUserWorkItem en esta situación también es probable que se produzca un error. Si
    la devolución de llamada es necesaria para ejecutarse durante mucho tiempo en una situación de recursos baja y, a continuación, un subproceso
    para este propósito debe reservarse antes de iniciar la operación asincrónica.

  • Una devolución de llamada que se invoca durante mucho tiempo, pero espera que short pueda pasar por su trabajo normalmente.

Comentarios

Si se invocará una devolución de llamada de tipo long o short depende de la implementación del autor de la llamada. Las implementaciones del canal y del agente de escucha proporcionan una manera de controlar esto para las devoluciones de llamada asincrónicas a través de las propiedades WS_CHANNEL_PROPERTY_ASYNC_CALLBACK_MODEL y WS_LISTENER_PROPERTY_ASYNC_CALLBACK_MODEL .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP]
Encabezado webservices.h