50 lines
		
	
	
		
			619 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			619 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
z1 := 0
 | 
						|
z2 := 0
 | 
						|
 | 
						|
fun loop1() {
 | 
						|
	| k |
 | 
						|
 | 
						|
	k := 1
 | 
						|
	while (< k 100) {
 | 
						|
		printf "loop1 => %d\n" k
 | 
						|
		k := (+ k 2)
 | 
						|
		yield
 | 
						|
	}
 | 
						|
 | 
						|
	z1 := k
 | 
						|
	sem-signal s1
 | 
						|
}
 | 
						|
 | 
						|
fun loop2() {
 | 
						|
	| k |
 | 
						|
 | 
						|
	k := 0
 | 
						|
	while (< k 100) {
 | 
						|
		printf "loop2 => %d\n" k
 | 
						|
		k := (+ k 2)
 | 
						|
		yield
 | 
						|
	}
 | 
						|
 | 
						|
	z2 := k
 | 
						|
	sem-signal s2
 | 
						|
}
 | 
						|
 | 
						|
s1 := (sem-new)
 | 
						|
s2 := (sem-new)
 | 
						|
 | 
						|
p1 := (fork loop1)
 | 
						|
p2 := (fork loop2)
 | 
						|
 | 
						|
##suspend p1
 | 
						|
##suspend p2
 | 
						|
##resume p1
 | 
						|
##resume p2
 | 
						|
 | 
						|
sem-wait s1
 | 
						|
sem-wait s2
 | 
						|
 | 
						|
if (== z1 101) { printf "OK: z1 is %d\n" z1 } \
 | 
						|
else { printf "ERROR: z1 is not 101 - %d\n" z1 }
 | 
						|
if (== z2 100) { printf "OK: z2 is %d\n" z2 } \
 | 
						|
else { printf "ERROR: z1 is not 100 - %d\n" z2 }
 |