LUA 同步和异步谓词完成
逻辑单元应用程序 (LUA) 谓词可以同步或异步完成执行。
同步谓词完成
如果 LUA 能够立即完成谓词的所有处理,则谓词已同步完成。 发生这种情况时,主返回代码设置为LUA_IN_PROGRESS以外的值, lua_flag2.async 位设置为零。
应测试 lua_flag2.async 位的值,而不是主返回代码不等于LUA_IN_PROGRESS。 (有关这些返回的参数的信息,请参阅单个谓词说明。)
异步谓词完成
例如,某些 LUA 谓词 (,RUI_PURGE 在本地处理后) 快速完成。 但是,大多数谓词需要一些时间才能完成,因为它们需要向本地节点或主机应用程序发送消息以及从主机应用程序接收消息。
如果 LUA 必须等待来自远程 LU 或本地节点的信息,然后才能完成谓词,则谓词以异步方式完成。
发生这种情况时, lua_flag2.async 位设置为 1。 主返回代码通常也设置为 LUA_IN_PROGRESS,但不能依赖此值。 应测试 lua_flag2.async 位的值。 应用程序现在可以执行其他处理,或等待 LUA 通知谓词已完成。 LUA 通过将主返回代码设置为其最终值并将 lua_flag2.async 设置为 1 来发出此通知。
谓词完成后,LUA 会根据环境执行以下操作:
对于 Windows,可以使用两种类型的通知。 LUA 应用程序之一:
问题 WaitForSingleObject 或 WaitForMultipleObject。
\- 或 -
将“WinRUI/WinSLI”通知消息发布到 WinRUI/WinSLI 消息的窗口句柄。
使用 WaitForSingleObject 或 WaitForMultipleObject 的事件方法是在 Windows 上接收异步通知的首选方法。
在 Windows 环境中,它通过将“WinRUI/WinSLI”通知消息发布到 WinRUI/WinSLI 消息的窗口句柄来通知异步请求的完成情况。 已添加窗口句柄作为传递到 WinRUI 和 WinSLI 入口点的第一个参数。