Commit 724b66fb authored by Nigel Tao's avatar Nigel Tao

doc: add round-robin flag to io2010 balance example.

R=r
CC=golang-dev
https://golang.org/cl/2050042
parent 7a2daa7d
...@@ -6,6 +6,7 @@ package main ...@@ -6,6 +6,7 @@ package main
import ( import (
"container/heap" "container/heap"
"flag"
"fmt" "fmt"
"rand" "rand"
"time" "time"
...@@ -14,6 +15,8 @@ import ( ...@@ -14,6 +15,8 @@ import (
const nRequester = 100 const nRequester = 100
const nWorker = 10 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. // Simulation of some work: just sleep for a while and report how long.
func op() int { func op() int {
n := rand.Int63n(1e9) n := rand.Int63n(1e9)
...@@ -125,7 +128,7 @@ func (b *Balancer) print() { ...@@ -125,7 +128,7 @@ func (b *Balancer) print() {
} }
func (b *Balancer) dispatch(req Request) { func (b *Balancer) dispatch(req Request) {
if false { if *roundRobin {
w := b.pool[b.i] w := b.pool[b.i]
w.requests <- req w.requests <- req
w.pending++ w.pending++
...@@ -144,7 +147,7 @@ func (b *Balancer) dispatch(req Request) { ...@@ -144,7 +147,7 @@ func (b *Balancer) dispatch(req Request) {
} }
func (b *Balancer) completed(w *Worker) { func (b *Balancer) completed(w *Worker) {
if false { if *roundRobin {
w.pending-- w.pending--
return return
} }
...@@ -156,6 +159,7 @@ func (b *Balancer) completed(w *Worker) { ...@@ -156,6 +159,7 @@ func (b *Balancer) completed(w *Worker) {
} }
func main() { func main() {
flag.Parse()
work := make(chan Request) work := make(chan Request)
for i := 0; i < nRequester; i++ { for i := 0; i < nRequester; i++ {
go requester(work) go requester(work)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment