三. SIMULA67协同程序 1.两个或两个以上程序单元之间交错地 执行这样的程序称为协同程序
三. SIMULA 67协同程序 1. 两个或两个以上程序单元之间交错地 执行,这样的程序称为协同程序
2.SⅠMULA67的协同程序是一个类实例 般形式为 class类名(参数 若设类x,变量y1和y2 参数说明 是对x的引用,那么可 begin 写成 说明; yl:-newx(…)2 语句表1 2: -new x(...) detach 当遇到一个new时,建 言 表2 立类的一个新实例,并 执行类体 en d
2. SIMULA 67的协同程序是一个类实例 一般形式为: class 类名(参数); 参数说明; begin 说明; 语句表1; detach; 语言表2 end 若设类x, 变量y1和y2 是对x的引用, 那么可 写成: y1:-new x(…); y2:-new x(…); 当遇到一个new时, 建 立类的一个新实例, 并 执行类体
3玩牌游戏少 begin boolean gameover; integer winner; s class player(n, hand); integer n integer array hand(1: 13) begin ref(player )next detach whle not gameover do begin出牌; if gameover then winner:n else resume(next) end en
3. 玩牌游戏 begin boolean gameover; integer winner; class player(n,hand); integer n; integer array hand(1:13); begin ref(player) next; detach; while not gameover do begin 出牌; if gameover then winner:=n else resume(next) end end
ref(player array p(1: 4), integer 1; integer array cardS(1: 13); 2 for i =I ste step I until 4 de begin第傢家拿牌; p(i): -new player(i, cards) en for 1: =1 step 1 until 3 do p(i). next: p(i+1); p(4). next: -p(1) resume 打印胜利者( winner end
ref(player) array p(1:4);integer i; integer array cards(1:13); for i:=1 step 1 until 4 do begin 第i家拿牌; p(i):-new player(i, cards) end; for i:=1 step 1 until 3 do p(i).next:-p(i+1); p(4).next:-p(1); resume (1); 打印胜利者(winner) end
四并发单元 1.—个例子 生产者-消费者”问题 单元 producer」 单元 consumer repeat生产一个元素 repeat从缓冲区移出一项; 存放这个元素到缓冲区;对该项执行某个运算 orever orever
四.并发单元 1. 一个例子 “生产者-消费者”问题 单元producer 单元consumer repeat 生产一个元素; 存放这个元素到缓冲区; forever repeat 从缓冲区移出一项; 对该项执行某个运算; forever