URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [go.test/] [test/] [chan/] [select6.go] - Rev 700
Compare with Previous | Blame | View Log
// $G $D/$F.go && $L $F.$A && ./$A.out// Copyright 2011 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.// Issue 2075// A bug in select corrupts channel queues of failed cases// if there are multiple waiters on those channels and the// select is the last in the queue. If further waits are made// on the channel without draining it first then those waiters// will never wake up. In the code below c1 is such a channel.package mainfunc main() {c1 := make(chan bool)c2 := make(chan bool)c3 := make(chan bool)go func() { <-c1 }()go func() {select {case <-c1:panic("dummy")case <-c2:c3 <- true}<-c1}()go func() { c2 <- true }()<-c3c1 <- truec1 <- true}
