Condividi tramite


enumerazione WS_CALLBACK_MODEL (webservices.h)

Specifica il comportamento di threading di un callback, ad esempio un WS_ASYNC_CALLBACK.

Sintassi

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

Costanti

 
WS_SHORT_CALLBACK
Valore: 0
Questo valore viene usato per indicare che viene richiamato un callback short.


Quando viene richiamato un callback breve, è consigliabile evitare calcoli lunghi o lunghe
blocco delle chiamate in modo che possa tornare rapidamente al chiamante. Durante il tempo
che un callback è in esecuzione breve, altri elementi di lavoro potrebbero non essere in grado di essere
dequeued all'interno del processo. Ciò può portare a un deadlock di fame, un
unresponsive system, o un sistema sottoutilizzato.


Se è necessario eseguire operazioni di I/O all'interno di un callback richiamato brevemente, la procedura consigliata è
per usare operazioni di I/O asincrone (invece di operazioni di I/O sincrone), per evitare lunghe chiamate di blocco.
WS_LONG_CALLBACK
Valore: 1
Questo valore viene usato per indicare che viene richiamato un callback lungo.


Un callback richiamato long non è necessario per tornare rapidamente al chiamante.


Tuttavia, i callback lunghi sono una risorsa limitata, quindi non è sempre possibile
per richiamare un callback lungo.


Prima di richiamare un callback lungo, il chiamante deve assicurarsi che sia presente un altro thread
disponibile per rimuovere dalla coda il lavoro in base alle esigenze. Ad esempio, se un chiamante deve creare
un thread ma non è in grado di, quindi deve richiamare il callback short.


Tutti i callback devono essere in grado di gestire la chiamata a breve e a lungo:

  • Callback richiamato breve, ma che richiede molto tempo può interpretare questa operazione come
    condizione di errore, probabilmente a causa di risorse basse. Ad esempio, chiamando CreateThread o
    Anche QueueUserWorkItem in questa situazione potrebbe non riuscire. Se
    callback è necessario per eseguire a lungo in una situazione di risorse bassa, quindi un thread
    a questo scopo deve essere riservato prima di avviare l'operazione asincrona.

  • Un callback che viene richiamato a lungo, ma prevede un breve intervallo di lavoro normalmente.

Commenti

Indica se un callback verrà richiamato a lungo o breve è fino all'implementazione del chiamante. Le implementazioni del canale e del listener consentono di controllare questa funzionalità per i callback asincroni tramite le proprietà WS_CHANNEL_PROPERTY_ASYNC_CALLBACK_MODEL e WS_LISTENER_PROPERTY_ASYNC_CALLBACK_MODEL .

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [app desktop | App UWP]
Server minimo supportato Windows Server 2008 R2 [app desktop | App UWP]
Intestazione webservices.h