33 lines
		
	
	
		
			528 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			528 B
		
	
	
	
		
			V
		
	
	
| fn do_rec(ch chan int, resch chan i64) {
 | |
| 	mut sum := i64(0)
 | |
| 	for _ in 0 .. 2000 {
 | |
| 		sum += <-ch
 | |
| 	}
 | |
| 	println(sum)
 | |
| 	resch <- sum
 | |
| }
 | |
| 
 | |
| fn do_send(ch chan int) {
 | |
| 	for i in 0 .. 2000 {
 | |
| 		ch <- i
 | |
| 	}
 | |
| }
 | |
| 
 | |
| fn test_channel_multi_unbuffered() {
 | |
| 	ch := chan int{}
 | |
| 	resch := chan i64{}
 | |
| 	go do_rec(ch, resch)
 | |
| 	go do_rec(ch, resch)
 | |
| 	go do_rec(ch, resch)
 | |
| 	go do_rec(ch, resch)
 | |
| 	go do_send(ch)
 | |
| 	go do_send(ch)
 | |
| 	go do_send(ch)
 | |
| 	go do_send(ch)
 | |
| 	mut sum := i64(0)
 | |
| 	for _ in 0 .. 4 {
 | |
| 		sum += <-resch
 | |
| 	}
 | |
| 	assert sum == i64(4) * 2000 * (2000 - 1) / 2
 | |
| }
 |