使用带 ENQMODEL 资源定义的 ENQ 和 DEQ 命令
ENQ 和 DEQ 命令用于序列化对共享资源的访问。 CICS® 将 ENQMODEL 资源与 z/OS® 全局资源序列化配合使用,以提供对多个应用程序所使用的资源的综合系统范围保护。
综合系统入队消除了事务间亲缘关系的重要原因,并允许跨综合系统的任务的单线程和同步。 它支持对共享临时存储器队列的并发更新进行序列化,并可防止将不同 CICS 区域中的并发任务写入的记录交错到远程瞬时数据队列中。 仅对于资源支持综合系统范围的入队,而对于地址上的入队,则不支持综合系统范围的入队。 它不是为了锁定可恢复资源而设计的。
单个 CICS 区域中的本地入队在 CICS 地址空间中进行管理。 影响多个 CICS 区域的综合系统范围的入队由 z/OS 全局资源序列化管理。 有关全局资源序列化的更多信息,请参阅 z/OS MVS Planning: Global Resource Serialization 。 有关为 CICS 配置 z/OS 全局资源序列化的信息,请参阅 全局 CICS 入队和出队: 提高性能。
对资源发出 EXEC CICS ENQ 和 EXEC CICS DEQ 命令时, CICS 将检查是否存在匹配的已安装 ENQMODEL 定义。 ENQMODEL 资源的 ENQSCOPE 属性定义共享同一入队作用域的区域集。 如果 ENQSCOPE 属性保留为空白 (缺省值) ,那么 CICS 会将任何匹配的 ENQ 或 DEQ 请求视为发出 CICS 区域的本地请求。 如果 ENQSCOPE 非空白,那么 CICS 会将 ENQ 或 DEQ 视为系统范围的,并将队列名称和资源名称传递到 z/OS 全局资源序列化以管理入队。 需要使用综合系统范围的入队或出队功能的 CICS 区域都必须定义并安装所需的 ENQMODEL 资源。 有关 ENQMODEL 资源的更多信息,请参阅 ENQMODEL 资源。
当您定义相应的 ENQMODEL 资源时,应用程序使用综合系统入队; 不需要更改应用程序。 对于动态配置资源名称的应用程序,因此事先未知,您可以使用入队 EXEC 接口程序出口 XNQEREQ 和 XNQEREQC 在资源名称的开头提供与适合的 ENQMODEL 资源定义匹配的字符。 有关这些用户出口的更多信息,请参阅 入队 EXEC 接口程序出口 XNQEREQ 和 XNQEREQC。
全局队列的争用和排队
如果任务需要等待本地排队,那么它只能与同一区域内的其他任务竞争,一旦持有排队的任务释放排队,它就会再次被分派。
管理全局队列竞争的方式会根据等待队列的任务与释放队列的任务是否在同一区域而有所不同。 与其他区域的任务相比,与持有者在同一区域的等待任务更有可能获得排队。 其他区域的任务在重试 ENQ 请求前会短暂暂停,而同一区域的等待任务会被立即分派。