diff options
| author | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 | 
|---|---|---|
| committer | Ondřej Surý <ondrej@sury.org> | 2011-09-13 13:11:55 +0200 | 
| commit | 80f18fc933cf3f3e829c5455a1023d69f7b86e52 (patch) | |
| tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /doc/progs/server1.go | |
| parent | 28592ee1ea1f5cdffcf85472f9de0285d928cf12 (diff) | |
| download | golang-80f18fc933cf3f3e829c5455a1023d69f7b86e52.tar.gz | |
Imported Upstream version 60
Diffstat (limited to 'doc/progs/server1.go')
| -rw-r--r-- | doc/progs/server1.go | 56 | 
1 files changed, 0 insertions, 56 deletions
| diff --git a/doc/progs/server1.go b/doc/progs/server1.go deleted file mode 100644 index b8c09269b..000000000 --- a/doc/progs/server1.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2009 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import "fmt" - -type request struct { -	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 -} - -func server(op binOp, service chan *request, quit chan bool) { -	for { -		select { -		case req := <-service: -			go run(op, req)  // don't wait for it -		case <-quit: -			return -		} -	} -} - -func startServer(op binOp) (service chan *request, quit chan bool) { -	service = make(chan *request) -	quit = make(chan bool) -	go server(op, service, quit) -	return service, quit -} - -func main() { -	adder, quit := 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 -	} -	for i := N-1; i >= 0; i-- {   // doesn't matter what order -		if <-reqs[i].replyc != N + 2*i { -			fmt.Println("fail at", i) -		} -	} -	quit <- true -} | 
