/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/ken/chan1.go
55 строк
879 B
Rob Pike
go/test/chan1.go: fix typo
25 фев 2012, 01:47
25 фев 2012, 01:47
e303eeb
Код
Авторство
О чём код?
// run // 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. // Test communication with multiple simultaneous goroutines. 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 { println("r", "m=", m, "r=", r, "h=", h[r]) panic("fail") } h[r] = 2 } } } func s(c chan int) { for n := 0; n < N; n++ { r := n if h[r] != 0 { println("s") panic("fail") } 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) }