Make writeBroadcaster safe for concurrent use.

This commit is contained in:
Robert Obryk
2013-03-30 16:02:22 +01:00
parent d1ed28cb94
commit 0bdfcfaa33
2 changed files with 33 additions and 1 deletions
+22
View File
@@ -124,3 +124,25 @@ func TestWriteBroadcaster(t *testing.T) {
writer.Close()
}
type devNullCloser int
func (d devNullCloser) Close() error {
return nil
}
func (d devNullCloser) Write(buf []byte) (int, error) {
return len(buf), nil
}
// This test checks for races. It is only useful when run with the race detector.
func TestRaceWriteBroadcaster(t *testing.T) {
writer := newWriteBroadcaster()
c := make(chan bool)
go func() {
writer.AddWriter(devNullCloser(0))
c <- true
}()
writer.Write([]byte("hello"))
<-c
}