// $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);
}
