diff options
Diffstat (limited to 'doc/progs/server.go')
-rw-r--r-- | doc/progs/server.go | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/doc/progs/server.go b/doc/progs/server.go index 8906e9635..f3a6b1889 100644 --- a/doc/progs/server.go +++ b/doc/progs/server.go @@ -7,45 +7,45 @@ package main import "fmt" type request struct { - a, b int; - replyc chan int; + a, b int + replyc chan int } type binOp func(a, b int) int func run(op binOp, req *request) { - reply := op(req.a, req.b); - req.replyc <- reply; + reply := op(req.a, req.b) + req.replyc <- reply } func server(op binOp, service chan *request) { for { - req := <-service; - go run(op, req); // don't wait for it + req := <-service + go run(op, req) // don't wait for it } } func startServer(op binOp) chan *request { - req := make(chan *request); - go server(op, req); - return req; + req := make(chan *request) + go server(op, req) + return req } func main() { - adder := startServer(func(a, b int) int { return a + b }); - const N = 100; - var reqs [N]request; + adder := startServer(func(a, b int) int { return a + b }) + const N = 100 + var reqs [N]request for i := 0; i < N; i++ { - req := &reqs[i]; - req.a = i; - req.b = i + N; - req.replyc = make(chan int); - adder <- req; + req := &reqs[i] + req.a = i + req.b = i + N + req.replyc = make(chan int) + adder <- req } for i := N-1; i >= 0; i-- { // doesn't matter what order if <-reqs[i].replyc != N + 2*i { - fmt.Println("fail at", i); + fmt.Println("fail at", i) } } - fmt.Println("done"); + fmt.Println("done") } |