// $G $D/$F.go && $L $F.$A && ./$A.out

// 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 "runtime"

const	N	= 1000;		// sent messages
const	M	= 10;		// receiving goroutines
const	W	= 2;		// channel buffering
var	h	[N]int;		// marking of send/recv

func
r(c chan int, m int) {
	for {
		select {
		case r := <- c:
			if h[r] != 1 {
				panicln("r",
					"m=", m,
					"r=", r,
					"h=", h[r]);
			}
			h[r] = 2;
		}
	}
}

func
s(c chan int) {
	for n:=0; n<N; n++ {
		r := n;
		if h[r] != 0 {
			panicln("s");
		}
		h[r] = 1;
		c <- r;
	}
}

func
main() {
	c := make(chan int, W);
	for m:=0; m<M; m++ {
		go r(c, m);
		runtime.Gosched();
	}
	runtime.Gosched();
	runtime.Gosched();
	s(c);
}
