// $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