并发符号预处理器详解
1. 并发符号概述
在并发编程中,除了常见的信号量、异步消息传递、远程过程调用和会合等同步机制外,还有一些其他的并发符号值得关注,包括条件临界区(CCRs)、监视器(Monitors)和通信顺序进程(CSP)。虽然某些基础环境本身不提供这些符号的直接支持,但有相应的预处理器可以将使用这些符号编写的程序转换为等效的可执行代码。这些并发符号使用的构造中,关键字通常以下划线开头,例如 _region
。
2. 条件临界区(CCRs)
2.1 CCRs 简介
CCRs 是一种比信号量更高级的同步机制。在使用信号量编写的程序中,往往难以清晰地看出哪些变量是共享的,以及 P
和 V
信号量操作是否在正确的位置和方式下使用,容易出现遗漏操作、使用错误操作或操作错误信号量等问题。
CCRs 提供了一种名为资源(resource)的抽象机制,用于指定共享变量的集合,同时提供了区域语句(region statement)来访问这些共享变量。资源内的变量只能在指定该资源的区域语句中访问,对给定资源中的变量的互斥访问是隐式的,即同一时间只允许一个进程执行针对该资源的区域语句。
2.2 CCRs 示例
2.2.1 求和问题
考虑一个涉及三个进程的问题:前两个进程各自生成一个数字并将其添加到一个累加和中,第三个进程等待前两个进程都完成添加操作后再获取累加和。
以下是使用 CCRs 解决该问题的示例: