Problem I: Ace my homework – Write a complete Go program whose main function spawns a fan of n goroutines and synchronizes them, without busy waiting, so that they cooperatively alternate printing ping pong to standard error, where n is given as a command-line argument. Each line must be printed to standard error by a different goroutine, and no goroutine must printmore than once. The goroutines need not print in the order in which they are created. For instance, 
$ go run PingPongFan. go 10
1 ping // printed by goroutine 9
2 pong // printed by goroutine 5
3 ping // printed by goroutine 3
4 pong // printed by goroutine 4
5 ping // printed by goroutine 2
6 pong // printed by goroutine 6
7 ping // printed by goroutine 7
8 pong // printed by goroutine 8
9 ping // printed by goroutine 1
10 pong // printed by goroutine 10
$
Your program must not contain any race conditions. Do not give more than 25 lines of code. 
Problem II: Ace my homework – Write a complete Go program whose main function spawns a chain of n goroutines and synchronizes them, without busy waiting, so that they cooperatively alternate printing ping pong to standard error, where n is given as a command-line argument. Each line must be printed to standard error by a different goroutine, and no goroutine must print more than once. For instance, 
$ go run PingPongChain. go 10 1 ping // printed by goroutine 1 2 pong // printed by goroutine 2 3 ping // printed by goroutine 3 4 pong // printed by goroutine 4 5 ping // printed by goroutine 5 6 pong // printed by goroutine 6 7 ping // printed by goroutine 7 8 pong // printed by goroutine 8 
  
9 ping // printed by goroutine 9
10 pong // printed by goroutine 10
$
Your program must not contain any race conditions. Do not give more than 25 lines of code. 

Published by
Write Papers
View all posts