]> Cypherpunks repositories - gostls13.git/commitdiff
doc: add round-robin flag to io2010 balance example.
authorNigel Tao <nigeltao@golang.org>
Tue, 31 Aug 2010 01:00:43 +0000 (11:00 +1000)
committerNigel Tao <nigeltao@golang.org>
Tue, 31 Aug 2010 01:00:43 +0000 (11:00 +1000)
R=r
CC=golang-dev
https://golang.org/cl/2050042

doc/talks/io2010/balance.go

index 6a0713831b35c375d6a1a678f4087ee8f403890f..b01f7468c5144ca69f04a917c4c581e0c103bcf5 100644 (file)
@@ -6,6 +6,7 @@ package main
 
 import (
        "container/heap"
+       "flag"
        "fmt"
        "rand"
        "time"
@@ -14,6 +15,8 @@ import (
 const nRequester = 100
 const nWorker = 10
 
+var roundRobin = flag.Bool("r", false, "use round-robin scheduling")
+
 // Simulation of some work: just sleep for a while and report how long.
 func op() int {
        n := rand.Int63n(1e9)
@@ -125,7 +128,7 @@ func (b *Balancer) print() {
 }
 
 func (b *Balancer) dispatch(req Request) {
-       if false {
+       if *roundRobin {
                w := b.pool[b.i]
                w.requests <- req
                w.pending++
@@ -144,7 +147,7 @@ func (b *Balancer) dispatch(req Request) {
 }
 
 func (b *Balancer) completed(w *Worker) {
-       if false {
+       if *roundRobin {
                w.pending--
                return
        }
@@ -156,6 +159,7 @@ func (b *Balancer) completed(w *Worker) {
 }
 
 func main() {
+       flag.Parse()
        work := make(chan Request)
        for i := 0; i < nRequester; i++ {
                go requester(work)