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
此值用于指示调用回调的时间较长。


调用 long 的回调不需要快速返回到调用方。


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


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


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

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

  • 调用 long 但预期为 short 的回调可以正常执行其工作。

注解

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

要求

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