WS_CALLBACK_MODEL枚举 (webservices.h)

指定回调 (的线程行为,例如WS_ASYNC_CALLBACK) 。

语法

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

常量

 
WS_SHORT_CALLBACK
值: 0
此值用于指示调用回调短。


调用回调短时,应避免长时间计算或冗长
阻止调用,以便它可以快速返回到调用方。 在此期间
回调正在执行短,其他工作项可能无法
在进程中取消排队。 这可能导致饥饿死锁,
无响应系统或未充分利用的系统。


如果需要在调用短的回调中执行 IO,最佳做法是
若要使用异步 IO (而不是同步 IO) ,以避免长时间阻止调用。
WS_LONG_CALLBACK
值:1
此值用于指示调用回调的时间长。


调用时间较长的回调不需要快速返回到调用方。


但是,长回调是有限的资源,因此并不总是可能的
以调用长回调。


调用回调之前,调用方必须确保有另一个线程
可根据需要取消排队工作。 例如,如果调用方需要创建
线程但无法,然后它必须调用回调短。


所有回调必须能够处理被调用的短和长:

  • 调用短但需要长时间的回调可将此解释为
    错误条件,可能是由于资源不足导致的。 例如,调用 CreateThread 或
    在这种情况下,QueueUserWorkItem 也可能失败。 如果
    需要回调才能在资源不足的情况下长时间运行,然后是线程
    出于此目的,必须在启动异步操作之前保留。

  • 调用长但预期较短的回调可以正常完成其工作。

注解

回调是调用长还是短回调是否由调用方实现决定。 通道和侦听器实现提供了一种通过 WS_CHANNEL_PROPERTY_ASYNC_CALLBACK_MODELWS_LISTENER_PROPERTY_ASYNC_CALLBACK_MODEL 属性控制异步回调的方法。

要求

   
最低受支持的客户端 Windows 7 [桌面应用|UWP 应用]
最低受支持的服务器 Windows Server 2008 R2 [桌面应用|UWP 应用]
标头 webservices.h