diff options
Diffstat (limited to 'test/bench/threadring.go')
-rw-r--r-- | test/bench/threadring.go | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/test/bench/threadring.go b/test/bench/threadring.go deleted file mode 100644 index 031908a20..000000000 --- a/test/bench/threadring.go +++ /dev/null @@ -1,71 +0,0 @@ -/* -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of "The Computer Language Benchmarks Game" nor the - name of "The Computer Language Shootout Benchmarks" nor the names of - its contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -*/ - -/* The Computer Language Benchmarks Game - * http://shootout.alioth.debian.org/ - * - * contributed by The Go Authors. - */ - -package main - -import ( - "flag" - "fmt" - "os" -) - -var n = flag.Int("n", 1000, "how many passes") - -const Nthread = 503 - -func f(i int, in <-chan int, out chan<- int) { - for { - n := <-in - if n == 0 { - fmt.Printf("%d\n", i) - os.Exit(0) - } - out <- n-1 - } -} - -func main() { - flag.Parse() - - one := make(chan int) // will be input to thread 1 - var in, out chan int = nil, one - for i := 1; i <= Nthread-1; i++ { - in, out = out, make(chan int) - go f(i, in, out) - } - go f(Nthread, out, one) - one <- *n - <-make(chan int) // hang until ring completes -} |