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 }
 |